[Tapestry5] T5学习小记
Linuxboy
2007-02-21
一个简单的Login流程:Login.html -> Start.html
Login.html <html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title>login test page</title> </head> <body> Please input your name: <p> <form t:id="form" t:type="Form"> Name:<input type="text" t:type="TextField" t:id="name" validate="required,minlength=3"/><br/> <input type="submit" value="login"/> </form> </p> </body> </html> Login.java package org.example.hilo.pages; import org.apache.tapestry.annotations.Component; //import org.apache.tapestry.annotations.ComponentClass; import org.apache.tapestry.annotations.InjectPage; import org.apache.tapestry.annotations.OnEvent; import org.apache.tapestry.corelib.components.Form; //@ComponentClass public class Login { private String _name; @Component private Form _form; @InjectPage private Start _startPage; public String getName(){ return _name; } public void setName(String name){ _name = name; } @OnEvent("submit") Object onLogin(){ //System.out.println("Name is:" + getName()); if(_form.getHasErrors()) return null; else { _startPage.setName(getName()); return _startPage; } } } Start.html <html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"> <head> <title>test page here</title> </head> <body> <h1>hilo Start Page</h1> Welcome, ${name}! [<a href="login">ReLogin</a>] </body> </html> Start.java package org.example.hilo.pages; //import org.apache.tapestry.annotations.ComponentClass; import org.apache.tapestry.annotations.OnEvent; import org.apache.tapestry.annotations.Persist; //import org.apache.tapestry.annotations.Retain; //@ComponentClass public class Start { @Persist private String _name; public String getName(){ return _name; } public void setName(String name){ _name = name; } } 小结: 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">按钮的功能? |
|
bclxz520
2007-02-25
为什么在tapestry-core-5.0.2.jar中找不到org.apache.tapestry.annotations.ComponentClass
|
|
Linuxboy
2007-02-25
5.0.2已经不需要@ComponentClass了,去掉即可正常运行。
另外,5.0.2的中文支持比5.0.1更差。 跟Howard交流的结果是:他将会在5.0.3的时候修正中文支持问题。 |
|
bclxz520
2007-02-26
在哪里配置welcome页
|
|
Linuxboy
2007-02-26
默认的welcome页面就是Start,不用配置。
但如果在web.xml里配置了welcome页的话,一般就会显示这里定义的页面。 |
|
bclxz520
2007-02-26
谢谢...
|
|
Linuxboy
2007-02-26
另外,在html模板中加入t:id="html"标记,可以直接用形如http://www.some.com/start.html来访问:
<html t:id="html" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"> <head><title>some page</title></head> <body> some contents </body> </html> |
|
bclxz520
2007-02-26
The requested resource (/t5/login.form) is not available.出现这个错误,是什么原因啊?
|
|
Linuxboy
2007-02-26
我没有碰到过这个问题。
你可以详细诉说吗? |
|
bclxz520
2007-02-26
当我submit后,就会转向login.form,但我不明白为什么会转向login.form
|