最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java Tapestry4.1.2入門說(shuō)明教程第2/2頁(yè)

 更新時(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類: 
復(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類:
復(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中不用寫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的集成
集成需要用到第三方的類庫(kù),可以下載: http://howardlewisship.com/downloads/tapestry-javaforge/tapestry-spring-1.0.0-bin.zip
將其解壓之后,將其中的jar包拷貝到類路徑中。
在我們的頁(yè)面類中,就可以用@InjectObject(“spring:userManager”)等類似的方法來(lái)訪問(wèn)userManager對(duì)象了。
如:
@InjectObject("spring:userManager")
public abstract UserManager getUserManager();
Tapestry組件開(kāi)發(fā)

相關(guān)文章

  • mybatis原理概述入門教程

    mybatis原理概述入門教程

    這篇文章主要介紹了在今天這篇博文中,我將要介紹一下mybatis的框架原理,以及mybatis的入門程序,實(shí)現(xiàn)用戶的增刪改查,她有什么優(yōu)缺點(diǎn)以及mybatis和hibernate之間存在著怎么樣的關(guān)系,大家這些問(wèn)題一起通過(guò)本文學(xué)習(xí)吧
    2016-09-09
  • servlet Cookie使用方法詳解(六)

    servlet Cookie使用方法詳解(六)

    這篇文章主要為大家詳細(xì)介紹了servlet Cookie的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Eclipse中常用快捷鍵匯總

    Eclipse中常用快捷鍵匯總

    這篇文章主要介紹了Eclipse中常用快捷鍵,文中介紹的非常詳細(xì),幫助大家更好的利用eclipse開(kāi)發(fā),感興趣的朋友可以了解下
    2020-07-07
  • Java中g(shù)etResourceAsStream用法分析

    Java中g(shù)etResourceAsStream用法分析

    這篇文章主要介紹了Java中g(shù)etResourceAsStream用法,較為詳細(xì)的分析了getResourceAsStream的功能及用法,需要的朋友可以參考下
    2015-06-06
  • MybatisPlus使用聚合函數(shù)的示例代碼

    MybatisPlus使用聚合函數(shù)的示例代碼

    本文主要介紹了MybatisPlus使用聚合函數(shù)的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 關(guān)于java.io.EOFException產(chǎn)生的原因以及解決方案

    關(guān)于java.io.EOFException產(chǎn)生的原因以及解決方案

    文章總結(jié):EOFException異常通常發(fā)生在嘗試從空的ObjectInputStream對(duì)象中讀取數(shù)據(jù)時(shí),解決方法是在finally語(yǔ)句中添加判斷,確保objectInputStream不為空后再進(jìn)行關(guān)閉操作,在處理1.txt文件為空的情況時(shí),捕獲EOFException可以避免程序終止,并且不會(huì)拋出空指針異常
    2025-01-01
  • Java類獲取Spring中bean的5種方式

    Java類獲取Spring中bean的5種方式

    這篇文章主要為大家詳細(xì)介紹了Java類獲取Spring中bean的5種方式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-03-03
  • 解析springBoot-actuator項(xiàng)目構(gòu)造中health端點(diǎn)工作原理

    解析springBoot-actuator項(xiàng)目構(gòu)造中health端點(diǎn)工作原理

    這篇文章主要介紹了springBoot-actuator中health端點(diǎn)工作原理,對(duì)spring-boot-actuator的項(xiàng)目構(gòu)造,工作原理進(jìn)行了全面的梳理,側(cè)重health健康檢查部分
    2022-02-02
  • Java中==運(yùn)算符與equals方法的區(qū)別及intern方法詳解

    Java中==運(yùn)算符與equals方法的區(qū)別及intern方法詳解

    這篇文章主要介紹了Java中==運(yùn)算符與equals方法的區(qū)別及intern方法詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Java多線程之并發(fā)編程的核心AQS詳解

    Java多線程之并發(fā)編程的核心AQS詳解

    AQS ( AbstractQueuedSynchronizer)是一個(gè)用來(lái)構(gòu)建鎖和同步器的框架,使用AQS能簡(jiǎn)單且高效地構(gòu)造出應(yīng)用廣泛的大量的同步器,下面小編和大家來(lái)一起學(xué)習(xí)一下吧
    2021-09-09

最新評(píng)論

鄂州市| 合阳县| 彭泽县| 集贤县| 新蔡县| 龙州县| 永康市| 邯郸市| 尖扎县| 聊城市| 武平县| 宁强县| 安陆市| 秦安县| 本溪市| 高唐县| 广汉市| 尼勒克县| 北票市| 德庆县| 水富县| 滕州市| 正安县| 施甸县| 库尔勒市| 东明县| 中山市| 宜宾市| 凌云县| 桂平市| 廉江市| 开远市| 五莲县| 盱眙县| 包头市| 长治县| 静海县| 邻水| 唐河县| 呼伦贝尔市| 绥棱县|