tapestry
首先tapestry组件最基本的是由三个文件组成:Html,page,java文件
Html页面是前台,java就是后台逻辑,page文件就是将前台与后台联系起来的配置文件。这里的组件大部分只在html页面中直接写就可以用。部分需要在page文件中配置。(下面例子中的html页面,page页面,java代码就是指这以上三个文件)。
1) DirectLink 组件
超连接的组件 listener为监听方法,parameters为所传值。用与页面跳转。
Html:
<a jwcid="@DirectLink"listener="listener:logSelect" parameters="item.id">
日志名称
</a>
Log.java
publicIPage logSelect(String id){
LogDetails logDetails = getLogDetails();
logDetails.setLogId(id);
return logDetails;
}
DirectLink组件表现为一个HTML<a>元素,用来提供一个URL,当用户点击时,触发页面中一个特定的监听方法(logSelect).
DirectLink通过listener监听方法将参数“扔”给下一个页面.
2) any 组件
Any组件适用与给各html标签,属性赋值,如给td的rowspan和title赋值:
<tdjwcid="@Any" rowspan="ognl:item.size"align="center" title="ognl:item.name">
</td>
也可以定义隐藏域如:
<inputtype="hidden" name=ognl:idid=ognl:id jwcid="@Any"value="ognl:value"/>
Any组件用法灵活多变,也很广泛,可用于多种其它组件不能完成的功能。
3) calendar 组件
Calendar组件为日期组件,显示日期时用,如:
<tdalign="left" >至:
<input name="Input" value="ognl:item.rq"readonly="RradOnly" width="200" jwcid="ggrq@xylib:Calendar"/></td>
上面的例子是显示出一个日期框让选择日期,若显示时间需加上time=“ture”。
若为列表显示则是需要加上state="list"属性,即只是显示出日期不能选择。
<spanjwcid="@xylib:Calendar" state="List" value="ognl:curJD_ZJZTQK.zjsj"/>
4) Chart 组件
Chart组件用来显示各种图表:
<imgjwcid="@xylib:Chart" width="800" height="400"chartType="ognl:chartType" chart="ognl:chartDocument"/>
5) Checkbox组件
Checkbox组件用来显示一个复选框:
<inputtype="checkbox" jwcid="@xylib:Checkbox"checked="checked" value="ognl:zjz.ZJ_ZJBH" />
有checked,disable等属性,value用来存checkbox的值。
Checkbox组件常和CheckboxGroup组件合起来用,将一组选中的值传到后台。
<spanjwcid="zjdh@xylib:CheckboxGroup"selected="ognl:jd_zjzzj_ids">
<input type="checkbox" jwcid="@xylib:Checkbox"checked="checked" value="ognl:zjz.ZJ_ZJBH" />
<input type="checkbox"jwcid="@xylib:Checkbox" checked="checked"value="ognl:zjz.ZJ_ZJBH" />
</span>
CheckboxGroup中的selected="ognl:jd_zjzzj_ids"属性就是将里面包裹的checkbox的值组成一个数组传到后台。
6) Css组件
引入样式表:
<link jwcid="@xylib:Css"href="../../../../style/SystemStyle.css" rel="stylesheet"type="text/css"/>
7) Insert组件
这个组件是用来完全显示的,这个组件很简单,就是实现out.print()的功能。例如后台传过来一个值需要在页面上显示.
<spanjwcid="@xylib:Insert" value="ognl:xh.SHYJ" />
Insert组件有一个raw属性,若raw=”true”则表示页面不解析成html代码。即后台输入是什么值,页面上就显示什么值。如:xh.shyj=”<table></table>”,若不写raw属性或为false,则页面会显示 出来一个表格。若写raw=”true”则只会显示<table></table>这几个字。
8) FilterInser组件
这个组件是用来不完全显示的。例如后台传过来一个值需要在页面上显示但是这个值太长,页面可能显示不完这时就需要用这个组件。它有一个length属性,这个属性等于几他就只显示几个字符,剩下的字符会以省略号显示。
<spanjwcid="@xylib:FilterInsert" value="ognl:xh.SHYJ"length="10"/>
9) foreach组件
foreach组件是用来循环输出后台查出来的list值,其中source为数据源即为后台list的名称,value和index是在page文件中定义的,value为循环时的变量,index则是一个序列号用来显示每条数据的序列 从0开始:
html代码:
<spanjwcid="@Foreach" source="ognl:bgzmwjlist"value="ognl:cur_bg" index=”ognl:index”>
<tr>
<tdalign="center" nowrap="nowrap"><spanjwcid="@Insert" value="ognl:cur_bg.BGNR"/></td>
</tr>
</span>
Page代码:
<?xmlversion="1.0" encoding="UTF-8"?>
<!DOCTYPEpage-specificationPUBLIC "-//ApacheSoftware Foundation//Tapestry Specification 4.0//EN"
"http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd">
<page-specification class="com.zzxy.model.cz.xygh.xybgsh.ShowBgMxListPage">
<property name=" cur_bg " />
<property name="index" />
</page-specification>
Java代码:
private Listbgzmwjlist;
public List getJY_BGZMWJList(){
if(this.isRendering() && this.bgzmwjlist == null){
this.bgzmwjlist = this.getXybgshFacade().getJY_BGZMWJList(jy_bgsq.getId());
}
return this.bgzmwjlist;
}
10) Hidden组件
就是隐藏域组件,跟普通的hidden是一样的:
<inputjwcid="@xylib:Hidden" value="ognl:jy_bgsq.id"/>
11) If组件
条件判断组件类似程序中的if,可单独使用也可跟else,condition属性即为条件:
<spanjwcid="@If" condition="ognl:index%2==0">
<span jwcid="@Insert"value="ognl:'<tr>'"raw="ognl:true"></span>
<spanjwcid=”@Else”>
</span>
12) Radio组件
生存一个单选按钮, radiogroup中包裹的是一组单选框,checked代表当前选 中的一个,在表单提交时selectted将当前选中的一个值传到后台。如:
<spanjwcid="xb@xylib:RadioGroup" class="TextStyle" selected="ognl:jc_cgrlxr.xb">
<inputjwcid="@xylib:Radio" type="radio"value="ognl:@com.zzxy.common.constants@JC_GYSLXR_BG_XB_MAN"checked="checked"/>
<span jwcid="@Insert"value="ognl:@com.zzxy.common.Constants@getmapJC_GYSLXR_BG_XB(@com.zzxy.common.Constants@JC_GYSLXR_BG_XB_MAN)"/>
<inputjwcid="@xylib:Radio" type="radio"value="ognl:@com.zzxy.common.Constants@JC_GYSLXR_BG_XB_WOMEN"/>
<span jwcid="@Insert"value="ognl:@com.zzxy.common.Constants@getmapJC_GYSLXR_BG_XB(@com.zzxy.common.Constants@JC_GYSLXR_BG_XB_WOMEN)"/>
</span>
13) ImpScript组件
引入js的组件:
<scriptjwcid="@xylib:ImpScript" script="InitTableEvent.js" />
14) Select组件
下拉框组件,value即为选中的值,中间的option是其子节点,即为下拉的选择项,source为一个list<map>集合
<selectjwcid="sybz5@xylib:Select" value="ognl:gg_XTKZ_ID_5.sybz"class="SelectStyle" style="width:50px">
<optionjwcid="@xylib:Options"source="ognl:@com.zzxy.common.Constants@GG_XTKZ_SYBZ_Map"/>
</select>
15) Tree组件
树型组件,跟据一定的规则查询出来的list转化为一个树型结构。在html页面中的jwcid的值 就是page页面中的id.在page页面中的source刚为java代码中定义的list;
Page页面中的selectedTreeNode的值则为选中树当前节点的id.
clickOnme则为点击树节点时执行的js方法名;
expand属性是定义树默认是否展开。
Html页面:
<table style="width: 100%;">
<tr>
<td>
<span jwcid="zbmlTree"></span>
</td>
</tr>
</table>
Page页面:
<page-specification class="com.zzxy.model.zb.mbgl.mbgl.zbwjmb.zbwjmbzd.FzbxmzlmlTreePage">
<component id="zbmlTree" type="xylib:Tree">
<binding name="source" value="listTreeNode"></binding>
<binding name="value" value="selectedTreeNode"/>
<binding name="jsFunctionName" value="'clickOnme'"/>
<binding name="expand" value="false"/>
</component>
</page-specification>
Jave代码:
private List listTreeNode;
public List getListTreeNode() {
if (this.listTreeNode == null && this.isRendering()) {
this.listTreeNode = new ArrayList();
TreeNode root = new TreeNode("ROOT", "招标文件模板目录");
listTreeNode.add(root);
return listTreeNode;
}