[Tapestry4] 如何在翻页时保存表单数据

mervincai 2007-03-30
我在页面中有一个查询表单,输入数据后点击查询,在页面下方有一个分页的表格,这一切都挺好,但当我点击表格的其他页时,表单的数据就消失了。

传统的解决办法其实有很多,例如用javascript来submit表单,或者把表单数据放在session中,但我觉得Tapestry这种面向组件的框架应该有更好的解决办法才对,否则跟那种无状态的web开发有什么区别?

例如像JSF或.NET,只需要把表格嵌套在表单中,就能自动实现数据和状态的维持。但我在tapestry中也这样做,却出错了。哪位大侠能告知Tapestry究竟能否支持这种自动状态保持的功能。
tapestry 2007-03-30
@Persist
public abstract String getName();
mervincai 2007-03-30
@persist其实是把变量放在Session中,这种做法在实际开发中并不提倡,因为Session中的数据会原来越庞大。我觉得Tapestry本身应该支持这种状态的保存,像.Net和JSF是利用隐藏字段来实现的。
tapestry 2007-03-31
@Persist("client:form")
public abstract String getName();

文档:http://wiki.apache.org/tapestry/FormClientPersistence
mervincai 2007-03-31
呵呵,原来还有这种用法,谢谢tapestry大侠了!
mervincai 2007-04-03
今天用@Persist("client:form") 这种办法试了一下,数据确实是序列化到页面的隐藏字段,但点击表格翻页时,form并不提交,请问大侠们,有没有不使用javascript,能让我在翻页时,form也同时提交的办法。
mervincai 2007-04-04
怎么没人回答啊,大家在用tapestry的时候难道没有遇到这种问题吗?
tapestry 2007-04-04
你不让用javascript,这个问题不太好回答,或者你试试直接把下一页做成form的提交按钮。
mervincai 2007-04-04
呵呵,我不用javascript,是因为我希望用tapestry不用象struts那样,在网页中放一堆的javascript。

我在网上发现一个叫Wicket的项目,它借鉴了tapestry和ASP.NET的思想,有tapestry面向组件的特点,却没有那么陡的学习曲线,现在正在学习中,觉得确实值得一看。
ylyqsm 2007-04-05
那就将数据保存到客户端,利用隐藏字段或@Persist("client")
Global site tag (gtag.js) - Google Analytics