Tapestry 组件详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CSDN__Java/article/details/49131191


首先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>

Java代码

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赋值:

<td jwcid="@Any"  rowspan="ognl:item.size" align="center" title="ognl:item.name">
</td>


       也可以定义隐藏域如:

<input type="hidden"  name=ognl:id id=ognl:id  jwcid="@Any"value="ognl:value"/>

Any组件用法灵活多变,也很广泛,可用于多种其它组件不能完成的功能。

 

(3) Calendar 组件

       Calendar组件为日期组件,显示日期时用,如:

<td align="left" >
<input name="Input"  value="ognl:item.rq" readonly="RradOnly" width="200" jwcid="ggrq@xylib:Calendar"/></td>


上面的例子是显示出一个日期框让选择日期,若显示时间需加上time=“ture”。

       若为列表显示则是需要加上state="list"属性,即只是显示出日期不能选择。

<span jwcid="@xylib:Calendar" state="List"  value="ognl:curJD_ZJZTQK.zjsj"/>

 

 

(4) Chart 组件

       Chart组件用来显示各种图表:

<img jwcid="@xylib:Chart" width="800" height="400"chartType="ognl:chartType" chart="ognl:chartDocument"/>

 

 

(5) Checkbox组件

       Checkbox组件用来显示一个复选框:

<input type="checkbox" jwcid="@xylib:Checkbox" checked="checked" value="ognl:zjz.ZJ_ZJBH" />

有checked,disable等属性,value用来存checkbox的值。

Checkbox组件常和CheckboxGroup组件合起来用,将一组选中的值传到后台。

<span jwcid=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()的功能。例如后台传过来一个值需要在页面上显示.

<span jwcid="@xylib:Insert" value="ognl:xh.SHYJ" />

Insert组件有一个raw属性,若raw=”true”则表示页面不解析成html代码。即后台输入是什么值,页面上就显示什么值。如:xh.shyj=”<table></table>”,若不写raw属性或为false,则页面会显示 出来一个表格。若写raw=”true”则只会显示<table></table>这几个字。

 

 

(8) FilterInser组件

    这个组件是用来不完全显示的。例如后台传过来一个值需要在页面上显示但是这个值太长,页面可能显示不完这时就需要用这个组件。它有一个length属性,这个属性等于几他就只显示几个字符,剩下的字符会以省略号显示。

<span jwcid="@xylib:FilterInsert" value="ognl:xh.SHYJ" length="10"/>

 

(9) Foreach组件

foreach组件是用来循环输出后台查出来的list值,其中source为数据源即为后台list的名称,value和index是在page文件中定义的,value为循环时的变量,index则是一个序列号用来显示每条数据的序列 从0开始:

html代码:

<span jwcid="@Foreach" source="ognl:bgzmwjlist" value="ognl:cur_bg" index=”ognl:index”>

<tr>

<td align="center" nowrap="nowrap"><span jwcid="@Insert" value="ognl:cur_bg.BGNR"/></td>

 </tr>

</span>

Page代码:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE page-specification PUBLIC "-//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是一样的:

<input jwcid="@xylib:Hidden" value="ognl:jy_bgsq.id"/>

 

(11) If组件

   条件判断组件类似程序中的if,可单独使用也可跟else,condition属性即为条件:

<span jwcid="@If"  condition="ognl:index%2==0">
<span jwcid="@Insert"value="ognl:'<tr>'"raw="ognl:true"></span>

<span jwcid=”@Else”>

 </span>

 

 

(12) Radio组件

   生存一个单选按钮, RadioGroup中包裹的是一组单选框,checked代表当前选 中的一个,在表单提交时selectted将当前选中的一个值传到后台。如:

<span jwcid="xb@xylib:RadioGroup" class="TextStyle" selected="ognl:jc_cgrlxr.xb">

              <input jwcid="@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)"/>

              <input jwcid="@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的组件:

<script jwcid="@xylib:ImpScript" script="InitTableEvent.js" />

 

 

 

 

 

(14) Select组件

下拉框组件,value即为选中的值,中间的option是其子节点,即为下拉的选择项,source为一个list<map>集合

<select jwcid="sybz5@xylib:Select" value="ognl:gg_XTKZ_ID_5.sybz" class="SelectStyle" style="width:50px">

<option jwcid="@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;

   }

阅读更多
换一批

没有更多推荐了,返回首页