我在这里遇到了一个非常奇怪的问题。我有一个rich:popupModal,用于编辑实体。该模式上的一些输入字段使用验证器。还有一些ajax用于更新该模态的其他字段。例如有'包数'字段,每包重量字段和总权重字段。如果您更改包数,它将更新总重量字段等
现在,例如用户输入的值太高,验证失败,显示错误消息。用户可以更正模态上的值或按取消。
当他取消时,实体被重置为编辑前的值(有一些ajax更改,所以我需要重置那些)。模态关闭,表格显示该实体的正确(重置)值。
现在奇怪的事情发生了。当我编辑另一个实体时,模态突然显示前一个实体的旧值(未通过验证的那些)。
为了调试这个,我检查是否使用了正确的商品实例,所以我为某些值添加了h:outputText字段,我还在模态上显示了实体的系统哈希。
我有...
打印'Stuff 1'的<h:outputText value="#{backingBean.entity.description}"/>
然后
<h:inputText value="#{backingBean.entity.description}"/>
打印'Stuff 3'(我编辑过的第一个实体)。 WTH?
我在实体上添加了getter和一个虚拟setter来返回System.identityHashCode。而h:outputText和h:inputText确实使用了一个不同的实体,但在两种情况下EL都是#{backingBean.entity.hashId}
时怎么可能呢?
我使用了richfaces a:log来查看是否显示任何错误,但一切看起来还不错。 我试图在取消时清除模态(在没有组件的情况下重新渲染它),但这也没有解决问题。我在Chrome和Firefox上都试过了。两者都有同样的问题。
这可能会发生什么?
我的环境:JSF 2,Seam 2.3,RichFaces 4.3.3,JBoss EAP 6.1