T5学习之Form的基本应用
2007-05-31 10:24
204 查看
原帖地址 :http://linuxboy.javaeye.com/blog/57682
下面展示如何进行page navigation和使用带t:value的input框:
Start.html(为了显示中文,使用了Messages进行localization):
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>hilo - ${message:page-title}<!--</span-->title>
<!--</span-->head>
<body>
<div align="center"><h3>${message:body-title}<!--</span-->h3><!--</span-->div>
<div align="center">
<form t:type="Form">
<table cellpadding="3">
<tr><td colspan="2" align="center" bgcolor="CC00AA">${message:body-title}<!--</span-->td><!--</span-->tr>
<tr><td>${message:name-label}<!--</span-->td><td><input t:type="TextField" t:id="userName" t:value="user.name" type="text"/><!--</span-->td><!--</span-->tr>
<tr><td>${message:pass-label}<!--</span-->td><td><input t:type="PasswordField" t:id="passWord" t:value="user.pass" type="password"/><!--</span-->td><!--</span-->tr>
<tr><td colspan="2" align="center"><input type="submit" value="Login"/> <input type="reset" value="Reset"/><!--</span-->td><!--</span-->tr>
<!--</span-->table>
<!--</span-->form>
<!--</span-->div>
<!--</span-->body>
<!--</span-->html>
Start.java:
java 代码
package org.examples.pages;
import org.apache.tapestry.annotations.InjectPage;
import org.examples.data.User;
public class Start {
private User _user;
@InjectPage
private Test _test;
void onPrepare(){
if(_user == null)
_user = new User();
}
String onSuccess(){
_test.setUser(_user);
System.out.println("当前登录的用户是:"+getUser().getName());
return "test";
}
public User getUser() {
return _user;
}
public void setUser(User user) {
_user = user;
}
}
Start.properties:
代码:
page-title=登录页面
body-title=用户登录
name-label=用户名:
pass-label=密 码:
User.java:
java 代码
package org.examples.data;
public class User {
private String _name;
private String _pass;
public String getName() {
return _name;
}
public String getPass() {
return _pass;
}
public void setName(String name) {
_name = name;
}
public void setPass(String pass) {
_pass = pass;
}
}
Test.html:
xml 代码
<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>hilo Login here<!--</span-->title>
<!--</span-->head>
<body>
Welcome, ${user.name}!
<!--</span-->body>
<!--</span-->html>
Test.java:
java 代码
package org.examples.pages;
import org.apache.tapestry.annotations.Persist;
import org.examples.data.User;
public class Test {
@Persist
private User _user;
String onActivate(){
if(_user==null || _user.getName()=="")
return "start";
else return null;
}
public void setUser(User user) {
_user = user;
}
public User getUser() {
return _user;
}
}
小结:
1. 要使用onActivate()方法进行 Page Navigation(页面导航),尤其是页面保护;
2. 使用形如
<input t:type="textfield" t:id="name" t:value="user.name"/>
模板时,必须对user对象进行初始化,不然页面将不能正常运行(抛出异常)。对象的初始化使用onPrepare()方法。
3. 一般的登录/创建/更新页面可以使用BeanEditForm,则更为方便快捷,其模板为
<t:comp type="beaneditform" object="user" submitLabel="Login"/>
在页面类中只要简单地建立user对象的getter和setter就行,不再需要onPrepare()对user对象进行初始化了。
下面展示如何进行page navigation和使用带t:value的input框:
Start.html(为了显示中文,使用了Messages进行localization):
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>hilo - ${message:page-title}<!--</span-->title>
<!--</span-->head>
<body>
<div align="center"><h3>${message:body-title}<!--</span-->h3><!--</span-->div>
<div align="center">
<form t:type="Form">
<table cellpadding="3">
<tr><td colspan="2" align="center" bgcolor="CC00AA">${message:body-title}<!--</span-->td><!--</span-->tr>
<tr><td>${message:name-label}<!--</span-->td><td><input t:type="TextField" t:id="userName" t:value="user.name" type="text"/><!--</span-->td><!--</span-->tr>
<tr><td>${message:pass-label}<!--</span-->td><td><input t:type="PasswordField" t:id="passWord" t:value="user.pass" type="password"/><!--</span-->td><!--</span-->tr>
<tr><td colspan="2" align="center"><input type="submit" value="Login"/> <input type="reset" value="Reset"/><!--</span-->td><!--</span-->tr>
<!--</span-->table>
<!--</span-->form>
<!--</span-->div>
<!--</span-->body>
<!--</span-->html>
Start.java:
java 代码
package org.examples.pages;
import org.apache.tapestry.annotations.InjectPage;
import org.examples.data.User;
public class Start {
private User _user;
@InjectPage
private Test _test;
void onPrepare(){
if(_user == null)
_user = new User();
}
String onSuccess(){
_test.setUser(_user);
System.out.println("当前登录的用户是:"+getUser().getName());
return "test";
}
public User getUser() {
return _user;
}
public void setUser(User user) {
_user = user;
}
}
Start.properties:
代码:
page-title=登录页面
body-title=用户登录
name-label=用户名:
pass-label=密 码:
User.java:
java 代码
package org.examples.data;
public class User {
private String _name;
private String _pass;
public String getName() {
return _name;
}
public String getPass() {
return _pass;
}
public void setName(String name) {
_name = name;
}
public void setPass(String pass) {
_pass = pass;
}
}
Test.html:
xml 代码
<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>hilo Login here<!--</span-->title>
<!--</span-->head>
<body>
Welcome, ${user.name}!
<!--</span-->body>
<!--</span-->html>
Test.java:
java 代码
package org.examples.pages;
import org.apache.tapestry.annotations.Persist;
import org.examples.data.User;
public class Test {
@Persist
private User _user;
String onActivate(){
if(_user==null || _user.getName()=="")
return "start";
else return null;
}
public void setUser(User user) {
_user = user;
}
public User getUser() {
return _user;
}
}
小结:
1. 要使用onActivate()方法进行 Page Navigation(页面导航),尤其是页面保护;
2. 使用形如
<input t:type="textfield" t:id="name" t:value="user.name"/>
模板时,必须对user对象进行初始化,不然页面将不能正常运行(抛出异常)。对象的初始化使用onPrepare()方法。
3. 一般的登录/创建/更新页面可以使用BeanEditForm,则更为方便快捷,其模板为
<t:comp type="beaneditform" object="user" submitLabel="Login"/>
在页面类中只要简单地建立user对象的getter和setter就行,不再需要onPrepare()对user对象进行初始化了。
相关文章推荐
- 一站式学习Wireshark(二):应用Wireshark观察基本网络协议
- 前端学习笔记--AJAX的应用(三)form表单改为AJAX提交
- 一站式学习Wireshark(二):应用Wireshark观察基本网络协议
- 深度学习框架TensorFlow学习与应用(一)——基本概念与简单示例
- 学习Memcached:2基本应用之控制台使用
- iOS学习应用开发就业课_003:UIButton基本功能
- JAVA学习第十四课(接口:implements及其基本应用)
- 学习并项目应用到EBS FORM查询开发
- hadoop学习笔记二_MapReduce应用场景、原理、基本架构
- 一站式学习Wireshark(二):应用Wireshark观察基本网络协议
- javascript学习笔记[8]--BOM基本应用
- 学习使用bootstrap基本控件(table、form、button)
- DevExpress学习系列(控件篇):GridControl的基本应用
- 学习笔记之lvm基本应用及其扩展和缩减实现
- 【Hadoop入门学习系列之六】HBase基本架构、编程模型和应用案例
- Hadoop学习第二次:HDFS的应用场景 部署 原理与基本框架
- php入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
- 学习Wireshark(二):应用Wireshark观察基本网络协议
- 【Tensorflow专题-01】深度学习应用介绍及tensorflow基本使用
- MongoDB副本集学习(二):基本测试与应用