如何在不使用JSF刷新页面的情况下提交非绑定的h:inputTextarea?

时间:2014-12-13 18:27:12

标签: jsf jsf-2 jsf-2.2

我有h:form文本标记。此文本标记没有,支持的语言的部分或全部翻译(例如en,fr,de,es)。

Text实体中描述的翻译关系如下所示。

@OneToMany(mappedBy="textUnit", cascade=CascadeType.ALL)
private Collection<Translation> translation;

我将文本标记绑定到支持bean,就像这样。

<h:inputHidden id="textId" value="#{textController.id}" />

在同一表格中,我通过我的网站支持的翻译循环(每个翻译都通过此查询返回。如果没有语言,则创建一个空的Translation实体并且为空。)< / p>

<ui:repeat var="trans" varStatus="status"
                            value="#{translationController.getAllTranslationsByTextId(textController.id)}">

这一切都很有效。

这是我的问题(与标题中的相同)。如何在不使用JSF刷新页面的情况下提交非绑定的h:inputTextarea?

<h:inputTextarea id="translation" value="#{trans.translation}" cols="50">
   <f:ajax listener="#{translationController.translationChanged}" event="change" execute="@form" />
</h:inputTextarea> 

我不知道如何将这些循环(ui:repeath:inputTextarea发送到价值textController的{​​{1}},然后使用

change

检索提交的变量 - 但没有刷新页面。有人有提示吗?

如果提交了所有翻译,或者只是我提交的翻译,我都不在乎。我知道与public void translationChanged(AjaxBehaviorEvent event) { HttpServletRequest req = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext() .getRequest(); // do something } 实例(实体)的关系非常重要。

我注意到每次离开Text时都会向服务器发送请求。但它没有挂钩到translateChanged方法。这里是通过此请求运行的JSF阶段的日志。

inputTextarea

0 个答案:

没有答案