我将从MS和ASP.NET进入Java世界,并在Java中寻找类似于基于ASP.NET组件的HTML框架 . 在审查了互联网上的大量链接之后,看起来JSF2(与facelets)是最匹配的(顺便说一下这是真的吗?还是有其他更好的选择?) .
问题我'm encountering during evaluation right now is correct usage of JSF' s查看状态 . 我的最终使用场景是一个集群的WEB服务器,我不会将网络带宽用于虚拟视图状态(请参阅另一个人在这里有点相关的问题JSF Tuning) .
我拿了一些JSF2教程并在设置了javax.faces.STATE_SAVING_METHOD = client后将ViewState生成为440个字符的HTML(omygod,页面只包含1个虚拟文本输入和1个提交按钮) . 在“POST on submit”中,我确实只需要来自文本输入的文本(10个字符)而不是虚拟视图状态(440个字符) .
所以问题是 - Is it possible to disable view state in JSF2?
Relevant links:
-
ASP.NET中的用例 - "Disable View State for a Page":
http://www.ironspeed.com/articles/Disable%20View%20State%20for%20a%20Page/Article.aspx -
stackoverflow上没有帮助的答案:
How to reduce javax.faces.ViewState in JSF
Update: Relevant links (from comments below):
2 回答
JSF是一个基于组件的框架,它具有很强的状态 - 所以你需要某个地方的状态,通过网络发送到客户端并再次发布,或者在服务器端 . 所以AFAIK的答案是否,你无法禁用View状态 . 但你可以最小化它 - 但是某些州总是需要存储 . 这link是相关的 .
如果您正在寻找一个不那么有状态的Java Web框架 - 那么可以查看一些基于Action的框架,如Struts或Stripes,这样您就可以在Request范围内工作,而不需要在回发上存在(或重建)组件树 . Play框架获得了良好的发展 - 专门针对RESTful架构而设计 . 我自己没有这方面的经验,但你可能想调查一下 . 取自Play网站:
由于Mojarra 2.1.19和Mojarra 2.2.0-m10,可以通过将
<f:view>
的transient
属性设置为true
来禁用每个视图的状态保存 .另见:
JSF is going stateless
What is the usefulness of statelessness in JSF?