论坛首页 Java企业应用论坛

T5学习小结(Form的基本应用)

浏览 3784 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-02-22  

一个简单的Login流程:Login.html -> Start.html
Login.html


xml 代码

 
  1. <html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">  
  2. <head>  
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>  
  4. <title>login test pagetitle>  
  5. head>  
  6. <body>  
  7. Please input your name:    
  8. <p>  
  9. <form t:id="form" t:type="Form">  
  10. Name:<input type="text" t:type="TextField" t:id="name" validate="required,minlength=3"/><br/>  
  11. <input type="submit" value="login"/>  
  12. form>  
  13. p>  
  14. body>  
  15. html>  

Login.java

java 代码
 
  1. package org.example.hilo.pages;   
  2.   
  3. import org.apache.tapestry.annotations.Component;   
  4. //import org.apache.tapestry.annotations.ComponentClass;   
  5. import org.apache.tapestry.annotations.InjectPage;   
  6. import org.apache.tapestry.annotations.OnEvent;   
  7.   
  8. import org.apache.tapestry.corelib.components.Form;   
  9.   
  10. //@ComponentClass  
  11. public class Login {   
  12.        
  13.     private String _name;   
  14.        
  15.     @Component  
  16.     private Form _form;   
  17.        
  18.     @InjectPage  
  19.     private Start _startPage;   
  20.        
  21.     public String getName(){   
  22.         return _name;   
  23.     }   
  24.     public void setName(String name){   
  25.         _name = name;   
  26.     }   
  27.        
  28.     @OnEvent("submit")   
  29.     Object onLogin(){   
  30.         //System.out.println("Name is:" + getName());   
  31.         if(_form.getHasErrors())   
  32.             return null;   
  33.         else {   
  34.             _startPage.setName(getName());   
  35.             return _startPage;   
  36.         }   
  37.     }   
  38.        
  39. }   


Start.html

xml 代码
 
  1. <html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">  
  2. <head>  
  3.   
  4. <title>test page heretitle>  
  5. head>  
  6. <body>  
  7. <h1>hilo Start Pageh1>  
  8. Welcome, ${name}! [<a href="login">Relogina>]   
  9. body>  
  10. html>  

Start.java

java 代码
 
  1. package org.example.hilo.pages;   
  2.   
  3. //import org.apache.tapestry.annotations.ComponentClass;   
  4. import org.apache.tapestry.annotations.OnEvent;   
  5. import org.apache.tapestry.annotations.Persist;   
  6. //import org.apache.tapestry.annotations.Retain;   
  7.   
  8. //@ComponentClass  
  9. public class Start {   
  10.        
  11.     @Persist  
  12.     private String _name;   
  13.            
  14.     public String getName(){   
  15.         return _name;   
  16.     }   
  17.     public void setName(String name){   
  18.         _name = name;   
  19.     }   
  20.        
  21. }   
  22.   


小结:

1.不能简化T5的一些template标记,尤其是t:type,比如<form t:type="Form" t:id="form">中,没有t:type="Form"的话,这个form只是个摆设;另外,<input t:type="TextField" ...>省略t:type的话,这个input框就不能进行validate了。   

2.目前测试是结果是<input ....>中,存在t:type标记的话,t:validate和validate效果等同。   

3.Start页面中的private String _name;要实现持久化,可以使用@Retain 或 @Persist两个annotation的任一个,但没有研究过源代码,不清楚两者的分别。   

4.Start页面还未实现页面保护,可以任意访问。页面保护的方法有哪位高手可以指点一下?   

5.不知如何实现<input type="reset">按钮的功能?

备注:5.0.2已经不需要通过@ComponentClass来声明一个页面类了。

   发表时间:2007-02-28  
4.

String onActivate()
{
    if(未登录)
        return "login"; //重定向到login页面
}

5.

直接“<input type="reset">”不就行了?
0 请登录后投票
   发表时间:2007-02-28  
我之前试过用“<input type="reset">”的,的确不行;但现在换了5.0.2之后,发现可以reset了。

5.0.2多了page navigation的内容,我也看到了,用onActivate()方法就可以实现页面保护了。

谢谢你!
0 请登录后投票
论坛首页 Java企业应用版

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