如何使用AJAX或JSF刷新部分页面?

时间:2012-04-04 20:08:54

标签: ajax jsf

如何使用Primefaces和Ajax(或不使用)呈现部分xhtml页面。其他一切正常,当用户按下复选框时,会显示消息,但不会更新usernamecontent。在这种情况下如何刷新panelgrid?我是AJAX的新手,今天开始:)

<h:outputLabel value="Do you want to create username?" for="description" />
    <p:selectBooleanCheckbox value="#{testController.selectedNew.asUser}">  
    <p:ajax update="msg" listener="#{testController.selectedNew.addMessage()}"/>
    <p:ajax update="usernamecontent"/> ------> **This is not working!**
    </p:selectBooleanCheckbox>  

    <h:panelGrid columns="2" id="usernamecontent" rendered="#{testController.selected.asUser}">
    <h:outputLabel value="#{bundle.CreateUserLabel_userUsername}" for="username" />
    <p:inputText id="username" value="#{testController.selectedNew.userUsername.username}" title="#{bundle.CreateUsersTitle_username}" required="true" requiredMessage="#{bundle.CreateUserRequiredMessage_username}"/>

    <h:outputLabel value="#{bundle.CreateUsersLabel_password}" for="password" />
    <p:inputText id="password" value="#{testController.selectedNew.userUsername.password}" title="#{bundle.CreateUserTitle_password}" required="true" requiredMessage="#{bundle.CreateUserRequiredMessage_password}"/>
    </h:panelGrid>

由于 萨米

1 个答案:

答案 0 :(得分:1)

您的usernamecontent组件本身在服务器端有条件地呈现。为了能够ajax更新组件,您需要确保始终呈现相关组件,因为它最终需要在客户端更新它。

您需要将其包装在另一个始终呈现的组件中,以便JavaScript始终可以访问它以更新内容。

<h:panelGroup id="usernamecontent">
    <h:panelGrid columns="2" rendered="#{testController.selected.asUser}">
        ...
    </h:panelGrid>
</h:panelGroup>