RichFaces a4j:support 应该在上下文中更新模型,而不是实体
Posted
技术标签:
【中文标题】RichFaces a4j:support 应该在上下文中更新模型,而不是实体【英文标题】:RichFaces a4j:support should update the model in the context, but not the entity 【发布时间】:2012-12-02 14:34:50 【问题描述】:我有一个 h:inputTextarea
和一些 a4j:support
来按需更新模型
<h:inputTextarea rows="15" id="taFreetext" value="#customInput.value"
required="true"
onkeyup="textAndLinesCount(#rich:element('taFreetext'),document.getElementById('msgCounterLines'),20, 64);">
<a4j:support ajaxSingle="true" event="onchange" />
</h:inputTextarea>
我的问题是,当我按下一个键时,不仅我上下文中的模型会更新,而且实体也会自动刷新!
此文件的page.xml
的刷新模式为手动
<begin-conversation join="true" flush-mode="manual"/>
我在 Seam Framework 论坛上阅读了这篇文章:Problems with AJAX and update model,但这并没有真正的帮助。
我的a4j:support
中也有一些action
,这使得entityManager.refresh()
如帖子中所写,但随后模型和实体仍处于旧状态...
期待一些好的提示,谢谢!
(我使用 JSF 1.2,RichFaces 3.3.3)
【问题讨论】:
你能再描述一下吗?我认为你需要使用savestate
。
@jubinPatel 你到底想要什么信息?我想帮你回答这个问题,如果你能告诉我,你的膝盖更多......以及:你对savestate
的意思是什么?
哪个实体变为空你的意思是输入文本区域值?还提供你的JS。 savestate
表示当整页重新加载时,您的支持 bean customInput
生成新对象。要保留最后一个对象,请使用 t:savestate
。在<body>
标记之后使用<t:saveState value="#customInput"/>
t 标记作为战斧库。它可能会解决问题
我们没有使用 tomahawk lib。没有实体变为空,问题是,模型的更新正在自动持久化实体......没有调用保存函数! setter 函数是一个普通的 setter 函数...
嗨@Joerg,您使用的是SEAM 托管的持久性上下文(@In EntityManager)吗?还有 customInput bean 的范围是什么?
【参考方案1】:
使用 reRender 属性更新模型,你所做的就是在 reRender 属性中提到它的 id,你会得到结果。
<a4j:support event="onchange" reRender="userRegistrationForm" action="#UserRegistrationBean.onChangeMenuCountry"></a4j:support>
【讨论】:
以上是关于RichFaces a4j:support 应该在上下文中更新模型,而不是实体的主要内容,如果未能解决你的问题,请参考以下文章