今天用到了tapestry中的IRequestCycle cycle,关于tapestry用的人不多,所以网上的资料也很少。所以我决定分享一下自己的见解。
IRequestCycle是tapestry中的一个接口,根据它的名字中的cycle,我把它理解为循环请求。
他的使用场景是,假设你有一个带搜索功能表格页面,当你第一次访问这个页面时,页面中的tapestry主键会自动去调用后端方法查询数据,然后返回到前端页面并渲染。接下来,当你需要进行搜索时你就需要用到IRequestCycle了,你可以在你的搜索按钮上定义一个listener监听你的Java文件中的方法,就像下面这样。
当你点击搜索后就会就会执行循环请求方法,并把你的查询参数‘映射’过来,然后执行你定义的查询方法,查出结果返回给前端。
前端页面查询组件
<div id="xmlbQueryCondition">
<table width="98%" align="center" cellpadding="0" cellspacing="2" class="table table-bordered table-striped table-hover">
<tr>
<td align="right">项目名称</td>
<td colspan="2" align="left"><input jwcid="xmmc@TextField" value="ognl:xmmc" style="width:230px;" class="TextStyle" maxlength="30"/></td>
<td align="right">立项时间</td>
<td colspan="2" align="left"><input jwcid="@xylib:Calendar" time="false" additional="maxDate:'2020-09-01',minDate:'2020-01-01'" value="ognl:lxsj" style="width:230px;" class="TextStyle" maxlength="200" /></td>
<td width="30%" align="left"><span style="margin-left:0px;">
<a href="#" class="btn green" onClick="queryXmlbForm();"><i class="xy-icon search white"></i>查 询</a>
<input style="display: none" jwcid="queryXmlb@Submit" listener="listener:queryAction" onclick="this.form.target='_self'" value="查询" />
</td>
</tr>
</table>
</div>
后端部分代码
@InjectSpring("xm.xmlbTestFacade")
public abstract XmlbTestFacade getXmlbTestFacade();
/**
* 查询项目列表经办人和供应商
* @return
*/
public List getXmlbJBRGYS(){
xm_zbxm = this.getXmlbTestFacade().getXmlbJbrGys(splitPageInfo,xmmc,lxsj);
return xm_zbxm;
}
public IPage queryAction(IRequestCycle cycle){
return this;
}