[Tapestry4] tapestry4 的分页,点击下页的时候出错?!
lyo
2007-05-07
我使用 Tapestry4的Table组件分页的时候,第一页是可以显示的,但是当我点击下一页的时候,就报错了:
org.apache.hivemind.ApplicationRuntimeException Either the tableModel parameter or both source and columns parameters must be specified by component Home/$TableView Stack Trace: org.apache.tapestry.contrib.table.components.TableView.getTableModel(TableView.java:220) org.apache.tapestry.contrib.table.components.TablePages.setCurrentPage(TablePages.java:191) org.apache.tapestry.contrib.table.components.TablePages.changePage(TablePages.java:183) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:324) org.apache.tapestry.listener.ListenerMethodInvokerImpl.invokeTargetMethod(ListenerMethodInvokerImpl.java:214) org.apache.tapestry.listener.ListenerMethodInvokerImpl.invokeListenerMethod(ListenerMethodInvokerImpl.java:155) org.apache.tapestry.listener.ListenerMethodInvokerImpl.searchAndInvoke(ListenerMethodInvokerImpl.java:124) org.apache.tapestry.listener.ListenerMethodInvokerImpl.invokeListenerMethod(ListenerMethodInvokerImpl.java:77) org.apache.tapestry.listener.SyntheticListener.actionTriggered(SyntheticListener.java:51) org.apache.tapestry.listener.ListenerInvokerTerminator.invokeListener(ListenerInvokerTerminator.java:51) $ListenerInvoker_112649beb7c.invokeListener($ListenerInvoker_112649beb7c.java) org.apache.tapestry.link.DirectLink.trigger(DirectLink.java:105) org.apache.tapestry.engine.DirectService.triggerComponent(DirectService.java:146) org.apache.tapestry.engine.DirectService.service(DirectService.java:132) $IEngineService_112649bebd5.service($IEngineService_112649bebd5.java) org.apache.tapestry.services.impl.EngineServiceOuterProxy.service(EngineServiceOuterProxy.java:66) org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:248) org.apache.tapestry.services.impl.InvokeEngineTerminator.service(InvokeEngineTerminator.java:60) $WebRequestServicer_112649bebb0.service($WebRequestServicer_112649bebb0.java) 但是我的代码好像没有任何问题: <table jwcid="@contrib:TableView" align="center" source="ognl:modaltest" pageSize="4" columns="id,threadTitle,devName" > <tr> <span jwcid="@contrib:TableColumns" /> </tr> <tr jwcid="tableRows@contrib:TableRows" class="ognl:beans.rowClass.next"> <td align="left"> <span jwcid="@Insert" value="ognl:components.tableRows.tableRow.id" /> </td> <td align="right"> <a href="#" jwcid="@DirectLink" listener="listener:getThreadDetail" parameters="ognl:components.tableRows.tableRow.id"> <span jwcid="@Insert" value="ognl:components.tableRows.tableRow.threadTitle" /> </a> </td> <td align="center" > <img jwcid="@Image" width="110" border="0" image="ognl:components.tableRows.tableRow.developer.imageAvatorAsset"/><br/> <span jwcid="@Insert" value="ognl:components.tableRows.tableRow.devName" /> </td> </tr> <tr> <td colspan="4" class="tablePages"> <span jwcid="tablePages@contrib:TablePages"/> </td> </tr> </table> 其中 source和columns都是赋了值的,否则第一页页不会正常显示的,有人遇到过这种问题么? ![]() |
|
jimlaren
2007-05-07
Page类代码贴一下
|
|
moonfly2004
2007-05-08
应该是你点击分页后 形成的sql语句使 source="ognl:modaltest" 中 modaltest方法 返回的list 是null
|
|
lyo
2007-05-08
moonfly2004 写道 应该是你点击分页后 形成的sql语句使 source="ognl:modaltest" 中 modaltest方法 返回的list 是null
但是我把 tableview赋值后就不是由我负责了,因此是否返回null我是无法控制的,我使用的是一次性加载数据的方式. |
|
lyo
2007-05-08
jimlaren 写道 Page类代码贴一下
<page-specification class="lyo.test.tapestry.pages.Home"> <property name="counter" persist="session" initial-value="0"/> <inject property="userService" object="spring:userService"/> <asset name="homeAsset" path="images/inspector-rollover.gif"/> <property name="imageAvatorAsset" /> <bean name="rowClass" class="org.apache.tapestry.bean.EvenOdd"/> <component id="brotherAsset" type="Rollover"> <binding name="image" value="asset:young"/> <binding name="mouseOver" value="asset:older"/> </component> <asset name="young" path="images/brother2.jpg"/> <asset name="older" path="images/brother3.jpg"/> </page-specification> |
|
ylyqsm
2007-05-09
你可以重写表组件,再作保护!
|
|
lyo
2007-05-11
知道为什么了,需要把那个 testmodel声明成 persist="session",不知道为什么,难道页面上显示数据的组建都要是持久的?
|