h:inputText和h:outputText显示相同(EL)字段的不同值

时间:2013-11-27 11:04:19

标签: jsf jsf-2 richfaces

我在这里遇到了一个非常奇怪的问题。我有一个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

0 个答案:

没有答案