论坛首页 Java企业应用论坛

请教Tapestry中Form提交问题

浏览 4200 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2005-11-08  
我看了开发指南,也看了说:Visit对象在Tapestry中是一个比较特别的对象,另外还有一个Globle对象。在这里,我们只需要记住,visit对象相当于session对象,而Globle对象相当于Application对象,对此有些不太太理解,请懂的朋友解说一下,谢谢了!

1.首先,在开发指南中,看示例哪个Visit应是自己写的一个JAVABEAN啊,好像并不是Tapestry自身的组件啊,我传的其它Bean,改成对应的结果出错啊
2.如果我用实例化一个Bean再付值,在下一页什么得不到啊
   发表时间:2005-11-08  
Visit
tapestry会自动创建的

用的时候获取一下

Visit v = (Visit)this.getVisit();
0 请登录后投票
   发表时间:2005-11-08  
为什么我用  Visit v = (Visit)this.getVisit();
会出错,基本的JAVA就不对啊
org.apache.tapestry.ApplicationRuntimeException
Unable to invoke method login on com.mytest.Login$Enhance_0@ad6513[Login]: null
  
java.lang.reflect.InvocationTargetException

  
java.lang.Error
Unresolved compilation problems: Visit cannot be resolved to a type Visit cannot be resolved to a type 
Stack Trace:
Visit cannot be resolved to a type
Visit cannot be resolved to a type
0 请登录后投票
   发表时间:2005-11-08  
Visit  是你定义的类的名称
0 请登录后投票
   发表时间:2005-11-08  
我是这样的,请教到底哪里错了?谢谢你了!!!
Userinfo.java
/**
*
*/
package com.mytest.povo;

import java.io.Serializable;

/**
* @author user
*
*/
public class Userinfo implements Serializable {
private String username;
private String password;
private Integer id;

public void setUsername(String name){
  this.username=name;
}
public String getUsername(){
return username;
}

public void setPassword(String pass){
this.password=pass;
}
public String getPassword(){
return password;
}

public void setId(Integer id){
this.id=id;
}
public Integer getId(){
return id;
}

}
*******Login.java
public abstract class Login extends BasePage {
public abstract String getUsername();
  public abstract void setUsername(String name);
  public abstract String getPassword();
  public abstract void setPassword(String pass);
 

  public void login(IRequestCycle cycle) {
  Userinfo userinfo =(Userinfo) getPage().getVisit();

userinfo.setUsername(this.getUsername()); userinfo.setPassword(this.getPassword());   System.out.println("---------"+userinfo.getUsername());
  System.out.println("----------"+this.getUsername());
 
  cycle.activate("Main");

}
 
}
********Login.page中
<property-specification name="username" type="java.lang.String"/>
    <property-specification name="password" type="java.lang.String"/>
********Login.html中
<form jwcid="@Form" listener="ognl:listeners.login">
<table cellpadding="4">
  <tr><td>Username:</td><td><input jwcid="@TextField" value="ognl:username" size="12"/></td>
  </tr>
   <tr><td>Password:</td><td><input jwcid="@TextField" value="ognl:password" hidden="ognl:true" size="12"/></td>
  </tr>
<tr align="right">
   <td colspan="2"><input type="submit" value="Login"/></td>
  </tr>
</table>
   </form>

------Main.java
/**
*
*/
package com.mytest;


import org.apache.tapestry.BaseComponent;
import org.apache.tapestry.IExternalPage;

import org.apache.tapestry.event.PageEvent;
import org.apache.tapestry.event.PageRenderListener;
import org.apache.tapestry.html.BasePage;


import com.mytest.povo.Userinfo;

/**
* @author user
*
*/
public abstract class Main extends BaseComponent
implements PageRenderListener{
private String username,password;
public void pageBeginRender(PageEvent event){
Userinfo userinfo =(Userinfo) getPage().getVisit();
this.SetUsername(userinfo.getUsername());
this.setPassword(userinfo.getPassword());
}




public void SetUsername(String name){
this.username=name;
}
public void setPassword(String pass){
this.password=pass;
}
public String getUsername(){
return username;
}
public String getPassword(){
return password;
}
}

------Main.page
<property-specification name="userinfo" type="java.lang.String"/>
      <property-specification name="password" type="java.lang.String"/>

------Main.html
<table cellpadding="4">
  <tr><td>Username:</td><td><span jwcid="@Insert" value="ognl:username" size="12"/></td>
  </tr>
   <tr><td>Password:</td><td><span jwcid="@Insert" value="ognl:password" hidden="ognl:true" size="12"/></td>
  </tr>
</table>


***************************************
但是我这样就可以正确提交,为什么呀,我都看了很多遍,跟哪个例子没什么差别啊,但就是出错,想不明白
public void login(IRequestCycle cycle)
    {
         Main main=(Main) cycle.getPage("Main");
          main.setUsername(this.getUsername());
          main.setPassword(this.getPassword());
        cycle.activate(main);
            return;
}
其它文件都是一样
0 请登录后投票
   发表时间:2005-11-09  
需要在*.application中指定Visit单元的地址。
     <property name="org.apache.tapestry.visit-class"
        value="visit单元地址"/>
    <property name="org.apache.tapestry.global-class"
        value="Global单元地址"/>
请先查看tapestry自带帮助。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics