点集贵州电脑网
 
 
 梦想之源 ›› 灌水专区 ›› 避免Form表单重复提交的问题 版主:
灌水专区
新建论坛
申请免费TS
1 / 1 页
<< 1 >>
跳转
 主题:避免Form表单重复提交的问题
 
 lele
发表时间:[2008-01-28 11:22:01] [向作者发站内短信] [复制链接告诉朋友]
等 级:列兵
经 验:498
性 别:帅哥
文 章:138
精 华:0

    @InjectPage("LoginSuccess")
 
    public abstract LoginSuccess getSuccessPage();
 @InjectPage("LoginFail")
 public abstract LoginFail getFailPage(); 
 public IPage login(IRequestCycle cycle)
 {
 
  boolean isLogin=getILoginInof().findUser(getUsername(), getPassword());
  
  if(true==isLogin){
   String url = ((TSHBaseEngine) this.getPage().getEngine()).getPageLinkUrl("LoginSuccess");
   LoginSuccess loginSuccessPage=(LoginSuccess)cycle.getPage("LoginSuccess");
   loginSuccessPage.setUsername(getUsername());
   getSuccessPage().setUsername(getUsername());
   throw new RedirectException(url);
   //return  getSuccessPage();
  }

  return  getFailPage();
 }

如题:

只不过 有个小问题 loginSuccessPage.setUsername(getUsername()); 在成功页面得不到用户输入的用户名,但是用普通的提交方法就可以得到,已经被注释

成功页面类和规范文件如下

public abstract class LoginSuccess extends TSHBasePage{
 
 
 public String username;
 //@Persist("client")
 public abstract void setUsername(String username);
 public abstract String getUsername();
 

}

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE page-specification PUBLIC
  "-//Apache Software Foundation//Tapestry Specification 4.0//EN"
  "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd">
<page-specification class="member.LoginSuccess">
   
    <component id="username" type="Insert">
       
        <binding name="value" value="username"/>
    </component>
   
   
</page-specification>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
欢迎您: <span jwcid="username"/>光临
</body>
</html>

 

 


 楼主更多新贴 :  
灌水专区jfreechart图形上的链接
灌水专区itemselection的问题
灌水专区ognl:devicegroup.id
灌水专区foreach的问题
  楼1  
等 级:列兵
经 验:498
性 别:帅哥
文 章:138
精 华:0
 lele
发表时间:[2008-01-28 11:29:23] [向作者发站内短信] [复制链接告诉朋友]

郁闷 page方法不能带参数吧

  楼2  
等 级:列兵
经 验:498
性 别:帅哥
文 章:138
精 华:0
 lele
发表时间:[2008-01-28 11:32:01] [向作者发站内短信] [复制链接告诉朋友]

那么我要在这个From 提交事件中,登陆后传递一个值给页面怎么办 只能用session存储吗 或者用那个Visit对象存储?

  楼3  
等 级:下士
经 验:1683
性 别:帅哥
文 章:496
精 华:2
 干煸四季豆
发表时间:[2008-01-28 11:42:24] [向作者发站内短信] [复制链接告诉朋友]

 String url = ((TSHBaseEngine) this.getPage().getEngine()).getPageLinkUrl("LoginSuccess");
   LoginSuccess loginSuccessPage=(LoginSuccess)cycle.getPage("LoginSuccess");
   loginSuccessPage.setUsername(getUsername());
   getSuccessPage().setUsername(getUsername());
   throw new RedirectException(url);
   //return  getSuccessPage();

呵呵,你咋能这么做呢?你跳转的是LoginSuccess页面的PageLink,既然是PageLink,那么你向LoginSuccess页面set值又有什么意义呢?你那些属性又不是持久化的,怎么会认为页面状态会保持呢?

你可以看看书上关于页面属性的介绍,什么是瞬时,什么是持久化。

  楼4  
等 级:列兵
经 验:498
性 别:帅哥
文 章:138
精 华:0
 lele
发表时间:[2008-04-07 13:31:14] [向作者发站内短信] [复制链接告诉朋友]

1.Engine类

public class TBaseEngine extends BaseEngine{

 /**
  * 根据传递进来的页面名称,返回一个PageLink方式的url,配合RedirectException即可完成PageLink跳转。
  *
  * @param pageName
  *            页面名称
  * @return
  */
 @SuppressWarnings( { "deprecation", "unchecked" })
 public String getPageLinkUrl(String pageName) {
  IEngineService service = this.getService(Tapestry.PAGE_SERVICE);
  Map parameters = new HashMap();
  parameters.put(ServiceConstants.PAGE, pageName);
  return this.getInfrastructure().getLinkFactory().constructLink(service,
    false, parameters, true).getURL();
 }
 
}

 

2.

在登陆页LoginPage.java使用

public abstract class LoginPage extends BasePage implements PageBeginRenderListener,PageValidateListener{

.....

//下面是LoginPage.java的135行,出错误在这里

      String url = ((TBaseEngine) cycle.getPage().getEngine()).getPageLinkUrl("MainPage");
      throw new RedirectException(url);

...

}

 

3.

MainPage.page

<page-specification class="com.longcredit.KEye.app.business.LoginPage">

....以下无关省略

4.问题:

在LoginPage.java使用 //ActPage page = (ActPage) cycle.getPage("MainPage");都是正常的,今天顺手写了个避免重复提交的实现,经常写,反而出错了

下面是错误:

org.apache.tapestry.BindingException
Exception invoking listener method loginSubmit of component Login: Failure invoking listener method 'public org.apache.tapestry.IPage com.longcredit.KEye.app.business.LoginPage.loginSubmit(org.apache.tapestry.IRequestCycle)' on $LoginPage_0@79dbc7[Login]: org.apache.tapestry.engine.BaseEngine
binding: org.apache.tapestry.binding.ListenerMethodBinding@205b65[parameter listener, component=Login, methodName=loginSubmit, location=context:/WEB-INF/Login.page, line 8, column 64]
component: $LoginPage_0@79dbc7[Login]
location: context:/WEB-INF/Login.page, line 8, column 64
3 "-//Apache Software Foundation//Tapestry Specification 4.0//EN"
4 "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd">
5 <page-specification class="com.longcredit.KEye.app.business.LoginPage">
6  
7 <component id="loginForm" type="Form">
8 <binding name="listener" value="listener:loginSubmit"/>
9 </component>
10  
11 <component id="username" type="TextField">
12 <binding name="value" value="username"/>
13 </component>
 
org.apache.hivemind.ApplicationRuntimeException
Failure invoking listener method 'public org.apache.tapestry.IPage com.longcredit.KEye.app.business.LoginPage.loginSubmit(org.apache.tapestry.IRequestCycle)' on $LoginPage_0@79dbc7[Login]: org.apache.tapestry.engine.BaseEngine
component: $LoginPage_0@79dbc7[Login]
location: context:/WEB-INF/Login.page, line 5, column 72
1 <?xml version="1.0" encoding="GB2312"?>
2 <!DOCTYPE page-specification PUBLIC
3 "-//Apache Software Foundation//Tapestry Specification 4.0//EN"
4 "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd">
5 <page-specification class="com.longcredit.KEye.app.business.LoginPage">
6  
7 <component id="loginForm" type="Form">
8 <binding name="listener" value="listener:loginSubmit"/>
9 </component>
10  
 
java.lang.ClassCastException
org.apache.tapestry.engine.BaseEngine
Stack Trace:
  • com.longcredit.KEye.app.business.LoginPage.loginSubmit(LoginPage.java:135)
  • sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  • sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  • sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  • java.lang.reflect.Method.invoke(Method.java:585)

为什么总显示类型不匹配啊,我的也面类 类型是一致的

 

  楼5  
等 级:下士
经 验:1683
性 别:帅哥
文 章:496
精 华:2
 干煸四季豆
发表时间:[2008-04-08 09:35:57] [向作者发站内短信] [复制链接告诉朋友]

你用TBaseEngine来实现IEngine,那么你是否在application文件里面配制TBaseEngine呢?

1 / 1 页
<< 1 >>
跳转
  快速回复
  帐号: 密码: 匿名不登陆
回复内容:  
验 证 码:
 
 
·VIP收费TS,您明智的选择!
·9800GT+19'液晶DIY仅售3500元
·双核特惠:1999、2999、3999
·什么是点金积分,如何查看自
·团购一期:三星R458-DS0G+高
  
贵州点集科技发展有限责任公司·点集贵州电脑网 版权所有©2006-2008
中华人民共和国增值电信业务经营许可证 黔B-20070010号
客服QQ: 93804809818866281927205370
电子邮件: deangi@vip.sina.com
技术支持: 0851-5109268