您的位置:首页 > 其它

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对象进行初始化了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: