欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java Tapestry4.1.2入門(mén)說(shuō)明教程

 更新時(shí)間:2008年11月06日 19:51:14   作者:  
不必關(guān)心鏈接!不必關(guān)心請(qǐng)求(http request)到了哪里!不必關(guān)心響應(yīng)(http response)要轉(zhuǎn)向哪里!Tapestry構(gòu)建于底層的request-resonse模式,基于Servlet技術(shù),抽象出面向組件開(kāi)發(fā)的模型。Tapestry關(guān)心的是:頁(yè)面、組件、事件、對(duì)象、方法、屬性!

對(duì)應(yīng)的Home類(lèi): 
復(fù)制代碼 代碼如下:

package com.bjsxt.crm.web.tapestry.test;
import org.apache.tapestry.annotations.Persist;
import org.apache.tapestry.html.BasePage;
public abstract class Home extends BasePage {
@Persist
public abstract int getCounter();
public abstract void setCounter(int count);
public void doClick(int increment){
int counter = getCounter();
counter = counter + increment;
setCounter(counter);
}
public void clearCounter(){
setCounter(0);
}
}

實(shí)例6:帶兩個(gè)參數(shù)的計(jì)算器
Home.html 
復(fù)制代碼 代碼如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
第一個(gè)Tapestry程序
現(xiàn)在時(shí)間是:<span jwcid="@Insert" value="ognl:new java.util.Date()"></span>
<p>
<a href="#" jwcid="@PageLink" page="Home">刷新</a>
<p>
計(jì)數(shù)器當(dāng)前的值是:<span jwcid="@Insert" value="ognl:counter"></span>
<a href="#" jwcid="@DirectLink" listener="listener:doClick" parameters="ognl:1">計(jì)數(shù)器增1</a> <br>
<a href="#" jwcid="@DirectLink" listener="listener:doClick" parameters="ognl:5">計(jì)數(shù)器增5</a> <br>
<a href="#" jwcid="@DirectLink" listener="listener:doClick" parameters="ognl:10">計(jì)數(shù)器增10</a> <br>
<a href="#" jwcid="@DirectLink" listener="listener:clearCounter">清空計(jì)數(shù)器</a> <br>
<a href="#" jwcid="@DirectLink" listener="listener:plus" parameters="ognl:{3,5}">計(jì)算3+5,</a>
計(jì)算結(jié)果是:<span jwcid="@Insert" value="ognl:result"></span>
</body>
</html>

使用ognl:{param1,param2}這樣的方式來(lái)傳遞多個(gè)參數(shù)。
對(duì)應(yīng)的Home類(lèi):
復(fù)制代碼 代碼如下:

package com.bjsxt.crm.web.tapestry.test;
import org.apache.tapestry.annotations.Persist;
import org.apache.tapestry.html.BasePage;
public abstract class Home extends BasePage {
@Persist
public abstract int getCounter();
public abstract void setCounter(int count);
public abstract int getResult();
public abstract void setResult(int result);
public void doClick(int increment){
int counter = getCounter();
counter = counter + increment;
setCounter(counter);
}
public void clearCounter(){
setCounter(0);
}
public void plus(int a,int b){
setResult(a + b);
}
}

實(shí)例7:Tapestry表單及提交
假設(shè)現(xiàn)在要提交一個(gè)Person對(duì)象:
復(fù)制代碼 代碼如下:

package com.bjsxt.crm.web.tapestry.test;
import java.util.Date;
public class Person {
//姓名
private String name;
//年齡
private int age;
//出生日期
private Date birthday;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

我們?cè)贖ome頁(yè)面添加一個(gè)鏈接指向添加頁(yè)面(AddPerson)
Home.html: 
復(fù)制代碼 代碼如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
第一個(gè)Tapestry程序
現(xiàn)在時(shí)間是:<span jwcid="@Insert" value="ognl:new java.util.Date()"></span>
<p>
<a href="#" jwcid="@PageLink" page="Home">刷新</a>
<p>
計(jì)數(shù)器當(dāng)前的值是:<span jwcid="@Insert" value="ognl:counter"></span>
<a href="#" jwcid="@DirectLink" listener="listener:doClick" parameters="ognl:1">計(jì)數(shù)器增1</a> <br>
<a href="#" jwcid="@DirectLink" listener="listener:doClick" parameters="ognl:5">計(jì)數(shù)器增5</a> <br>
<a href="#" jwcid="@DirectLink" listener="listener:doClick" parameters="ognl:10">計(jì)數(shù)器增10</a> <br>
<a href="#" jwcid="@DirectLink" listener="listener:clearCounter">清空計(jì)數(shù)器</a> <br>
<a href="#" jwcid="@DirectLink" listener="listener:plus" parameters="ognl:{3,5}">計(jì)算3+5,</a>
計(jì)算結(jié)果是:<span jwcid="@Insert" value="ognl:result"></span>
<p>
<a href="#" jwcid="@PageLink" page="AddPerson">添加人員信息</a>
</body>
</html>

AddPerson.html 
復(fù)制代碼 代碼如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html jwcid="@Shell" title="添加人員信息">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body jwcid="@Body">
<form jwcid="@Form" success="listener:save">
<table width="100%" border="0" cellspacing="1" cellpadding="0">
<tr>
<td width="17%">姓名</td>
<td width="20%"><input type="text" name="textfield" jwcid="@TextField" value="ognl:person.name"/></td>
<td width="10%">年齡</td>
<td width="19%"><input type="text" name="textfield2" jwcid="@TextField" value="ognl:person.age"/></td>
<td width="10%">出生日期</td>
<td width="24%"><input type="text" name="textfield22" jwcid="@DatePicker" translator="translator:date,pattern=yyyy-MM-dd" value="ognl:person.birthday"/></td>
</tr>
<tr>
<td colspan="6"><div align="center">
<input type="submit" name="Submit" value="提交"/>
</div></td>
</tr>
</table>
</form>
</body>
</html>

注意:在頁(yè)面中的Tapestry組件(使用了jwcid標(biāo)記)的標(biāo)簽,必須有相應(yīng)的close tag,特別注意<input/>標(biāo)簽,必須有close tag。
AddPerson.java 
復(fù)制代碼 代碼如下:

package com.bjsxt.crm.web.tapestry.test;
import org.apache.tapestry.event.PageBeginRenderListener;
import org.apache.tapestry.event.PageEvent;
import org.apache.tapestry.html.BasePage;
public abstract class AddPerson extends BasePage implements PageBeginRenderListener{
public abstract Person getPerson();
public abstract void setPerson(Person person);
public void pageBeginRender(PageEvent event) {
setPerson(new Person());
}
public void save(){
Person person = getPerson();
System.out.println("name="+getPerson().getName());
System.out.println("age="+getPerson().getAge());
System.out.println("birthday="+getPerson().getBirthday());
}
}

注意,需定義一個(gè)PageBeginRenderListener,來(lái)給Person賦予初始化值,否則,OGNL在解釋它(Person對(duì)象)的屬性時(shí),會(huì)發(fā)生異常!
如何提交中文
我們必須在app.application中添加如下配置:
復(fù)制代碼 代碼如下:

<?xml version="1.0"?>
<!DOCTYPE application PUBLIC
"-//Apache Software Foundation//Tapestry Specification 4.0//EN"
"http://tapestry.apache.org/dtd/Tapestry_4_0.dtd">
<application>
<meta key="org.apache.tapestry.template-encoding" value="GBK"/>
<meta key="org.apache.tapestry.output-encoding" value="GBK"/>
<meta key="org.apache.tapestry.page-class-packages" value="com.bjsxt.crm.web.tapestry.test"/>
</application>

如何轉(zhuǎn)向其它頁(yè)面
利用@InjectPage注解直接注入頁(yè)面。如:
復(fù)制代碼 代碼如下:

@InjectPage("ShowProject")public abstract ShowProject getShowProject(); public IPage doSubmit() { ShowProject showProject = getShowProject(); showProject.setProject(getProject()); return showProject; }

Tapestry概要
在Tapestry中不用寫(xiě)Action,而是listener method。你不用去構(gòu)建URL地址,而是使用DirectLink組件,并配置它調(diào)用listener method。
Tapestry以組件為中心。所謂以組件為中心,即:
l Tapestry應(yīng)用程序由一系列頁(yè)面(page)組成
l 頁(yè)面由更小的組件(Component)組成
l 組件本身也有可能由其它的組件組合而成的(不限制組合的深度)
l 每個(gè)頁(yè)面會(huì)有唯一的,不重復(fù)的名字
l 在每個(gè)頁(yè)面里面的組件,其標(biāo)識(shí)也是不能重復(fù)的(默認(rèn)的情況下,Tapestry會(huì)給頁(yè)面中的每個(gè)組件自動(dòng)生成一個(gè)ID標(biāo)識(shí))
Tapestry與Spring的集成
集成需要用到第三方的類(lèi)庫(kù),可以下載: http://howardlewisship.com/downloads/tapestry-javaforge/tapestry-spring-1.0.0-bin.zip
將其解壓之后,將其中的jar包拷貝到類(lèi)路徑中。
在我們的頁(yè)面類(lèi)中,就可以用@InjectObject(“spring:userManager”)等類(lèi)似的方法來(lái)訪問(wèn)userManager對(duì)象了。
如:
@InjectObject("spring:userManager")
public abstract UserManager getUserManager();
Tapestry組件開(kāi)發(fā)

相關(guān)文章

最新評(píng)論