2015-04-22 159 views
0

期间结合我有以下标记:执行数据AJAX请求

<rich:panel id="selectorPanel"> 
    <h:inputText value="#{myBean.field1}" /> 
    <h:inputText value="#{myBean.field2}" /> 
    <h:inputText value="#{myBean.field3}" /> 
    <!-- and so forth --> 
    <h:selectOneMenu id="selector" value="#{myBean.selected}"> 
     <a4j:ajax event="change" listener="#{myBean.doUpdateValues()}" render="selectorPanel" /> 
     <f:selectItem itemLabel="#{msgs['bundle.addFilter']}" itemValue="#{null}" value="#{null}"/> 
     <f:selectItems value="#{myBean.filters}" /> 
    </h:selectOneMenu> 
</rich:panel> 

问题:当我改变selectOneMenuselectorPanel的值被重新呈现,因此inputText的值正在刷新并设置为myBean的属性值。

但我需要在重新渲染之前将用户在网页上输入的值设置为对应的bean的属性。

可能吗?怎么样?

回答

0

我已经找到了解决办法刚才,我们实际上可以使用execute属性如下:

execute="@all" 

这对我的作品。

+0

'execute =“@ all”'是一个不好的习惯。这就像发送一个同步请求,即使它认为它看起来像一个异步请求。躲开它。 – Tiny

+0

@Tiny那么你打算怎样解决这个问题呢? – user3663882

+0

@Tiny BTW,f:ajax标签没有这样的属性。 JSF 2.1中有类似的东西吗? – user3663882

1

为什么需要执行所有? @form应该是足够的,甚至是输入ID的列表。