Bean绑定不能在ajax调用中工作

时间:2016-11-21 16:05:30

标签: ajax jsf primefaces

我有一个定义帮助程序的流程,正确提交数据

<var name="contactForm" class="my.package.bean.ContactFormHelper"/>

要根据用户输入获取一些数据,我在视图中使用绑定属性String id调用ajax:

<h:panelGroup >
    <p:outputLabel for="id" value="ID" />
    <p:inputText id="id" required="true" value="#{contactForm.id}" label="ID">
        <f:ajax 
            event="change" 
            listener="#{contactController.identifyCustomer(contactForm)}" 
            render="anotherPanel" 
        />
        <p:clientValidator/>
    </p:inputText>
    <p:message for="id" />
</h:panelGroup>

但是当执行identifyCustomer时,只更新放置ajax的字段(String id)。其余字段填充了默认值。

LOG TRACE

  

[21/11/16 17:10:12:508 CET] 0000007a SystemOut O DEBUG [WebContainer:0:8610ff45-f4c5-4faf-a370-efa36701bc01] - ContactForm [name =,surnames =,nif = 46713535Y]

为什么会发生这种情况?

1 个答案:

答案 0 :(得分:1)

我找到了process使用@this的解决方案和以逗号分隔的字段:

<p:ajax 
    event="change" 
    listener="#contactController.identifyCustomer(contactForm)}"
    <!-- add process with the fields to bind -->
    process="@this name,surname1,surname2"
    update="newCustomerPanel" 
/>

希望对别人有所帮助。