我在JSF2中测试了新的Flash作用域,但我发现了一个主要问题,或者我缺乏一些知识。
有一个页面:
<h:body>
Value in flash: #{flash.text}
<h:form>
<h:inputText value="#{flash.text}" />
<h:commandButton value="Test" /> <!-- Same behavior with faces redirect -->
</h:form>
</h:body>
我有一个场景:
- 输入值'foo',然后点击Test
- 我得到'Value in flash: foo'
- 打开相同地址的新页面
- 我得到'Value in flash:'
- 我打开另一个相同地址的新页面
- 我得到' flash中的值:foo' <- IMHO这是错误的!
再现性:100%在Glassfish 3.1和JBoss AS 7上测试
不同的问题可能有相同的原因:从flash中删除JSF消息
:
- 是JSF2 flash的期望行为吗?
- 基于这个和其他注意到的flash问题,参考flash实现是否被认为是有害的?
我认为现在闪电侠的实现应该被认为是有害的。在我每天工作的应用程序中,我有一个非常好的用例,但不幸的是,闪电侠似乎无法使用。
主要的问题是,用于传输指针到状态的cookie没有被清除,参见Flash作用域消息比下一个请求存活的时间更长。
flash作用域似乎也存在安全问题,参见flash作用域cookie允许数据利用。
如果你有任何困扰,请为链接的问题投票;)