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

java Tapestry4.1.2入門說明教程

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

對應(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);
}
}

實例6:帶兩個參數(shù)的計算器
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>
第一個Tapestry程序
現(xiàn)在時間是:<span jwcid="@Insert" value="ognl:new java.util.Date()"></span>
<p>
<a href="#" jwcid="@PageLink" page="Home">刷新</a>
<p>
計數(shù)器當前的值是:<span jwcid="@Insert" value="ognl:counter"></span>
<a href="#" jwcid="@DirectLink" listener="listener:doClick" parameters="ognl:1">計數(shù)器增1</a> <br>
<a href="#" jwcid="@DirectLink" listener="listener:doClick" parameters="ognl:5">計數(shù)器增5</a> <br>
<a href="#" jwcid="@DirectLink" listener="listener:doClick" parameters="ognl:10">計數(shù)器增10</a> <br>
<a href="#" jwcid="@DirectLink" listener="listener:clearCounter">清空計數(shù)器</a> <br>
<a href="#" jwcid="@DirectLink" listener="listener:plus" parameters="ognl:{3,5}">計算3+5,</a>
計算結(jié)果是:<span jwcid="@Insert" value="ognl:result"></span>
</body>
</html>

使用ognl:{param1,param2}這樣的方式來傳遞多個參數(shù)。
對應(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);
}
}

實例7:Tapestry表單及提交
假設(shè)現(xiàn)在要提交一個Person對象:
復(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;
}
}

我們在Home頁面添加一個鏈接指向添加頁面(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>
第一個Tapestry程序
現(xiàn)在時間是:<span jwcid="@Insert" value="ognl:new java.util.Date()"></span>
<p>
<a href="#" jwcid="@PageLink" page="Home">刷新</a>
<p>
計數(shù)器當前的值是:<span jwcid="@Insert" value="ognl:counter"></span>
<a href="#" jwcid="@DirectLink" listener="listener:doClick" parameters="ognl:1">計數(shù)器增1</a> <br>
<a href="#" jwcid="@DirectLink" listener="listener:doClick" parameters="ognl:5">計數(shù)器增5</a> <br>
<a href="#" jwcid="@DirectLink" listener="listener:doClick" parameters="ognl:10">計數(shù)器增10</a> <br>
<a href="#" jwcid="@DirectLink" listener="listener:clearCounter">清空計數(shù)器</a> <br>
<a href="#" jwcid="@DirectLink" listener="listener:plus" parameters="ognl:{3,5}">計算3+5,</a>
計算結(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>

注意:在頁面中的Tapestry組件(使用了jwcid標記)的標簽,必須有相應(yīng)的close tag,特別注意<input/>標簽,必須有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());
}
}

注意,需定義一個PageBeginRenderListener,來給Person賦予初始化值,否則,OGNL在解釋它(Person對象)的屬性時,會發(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)向其它頁面
利用@InjectPage注解直接注入頁面。如:
復(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)用程序由一系列頁面(page)組成
l 頁面由更小的組件(Component)組成
l 組件本身也有可能由其它的組件組合而成的(不限制組合的深度)
l 每個頁面會有唯一的,不重復(fù)的名字
l 在每個頁面里面的組件,其標識也是不能重復(fù)的(默認的情況下,Tapestry會給頁面中的每個組件自動生成一個ID標識)
Tapestry與Spring的集成
集成需要用到第三方的類庫,可以下載: http://howardlewisship.com/downloads/tapestry-javaforge/tapestry-spring-1.0.0-bin.zip
將其解壓之后,將其中的jar包拷貝到類路徑中。
在我們的頁面類中,就可以用@InjectObject(“spring:userManager”)等類似的方法來訪問userManager對象了。
如:
@InjectObject("spring:userManager")
public abstract UserManager getUserManager();
Tapestry組件開發(fā)

相關(guān)文章

  • mybatis原理概述入門教程

    mybatis原理概述入門教程

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

    servlet Cookie使用方法詳解(六)

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

    Eclipse中常用快捷鍵匯總

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

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

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

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

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

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

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

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

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

    解析springBoot-actuator項目構(gòu)造中health端點工作原理

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

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

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

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

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

最新評論

赤水市| 常宁市| 夏河县| 沙河市| 玉田县| 洪洞县| 嘉峪关市| 和顺县| 治多县| 罗源县| 杭锦后旗| 孝义市| 白水县| 都兰县| 崇明县| 惠水县| 藁城市| 衡山县| 金沙县| 大庆市| 烟台市| 邻水| 体育| 天长市| 湘潭县| 尖扎县| 定远县| 南昌县| 樟树市| 商水县| 大英县| 富宁县| 通化市| 法库县| 游戏| 仙居县| 余江县| 凤台县| 临西县| 阿勒泰市| 怀宁县|