【问题标题】:How to refresh part of the page with AJAX or JSF?如何使用 AJAX 或 JSF 刷新部分页面?
【发布时间】:2012-04-18 14:19:03
【问题描述】:

如何使用 Primefaces 和 Ajax(或不使用)逐部分呈现 xhtml 页面。其他一切正常,当用户按下复选框时,会显示消息,但用户名内容永远不会更新。在这种情况下如何刷新面板网格?我是 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>

谢谢 萨米人

【问题讨论】:

    标签: ajax jsf


    【解决方案1】:

    您的usernamecontent 组件本身会在服务器端有条件地呈现。为了能够对组件进行 ajax 更新,您需要确保始终呈现有问题的组件,因为最终需要在客户端更新它的是 JavaScript。

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

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

    【讨论】:

    猜你喜欢
    • 2014-06-21
    • 2019-12-23
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 1970-01-01
    • 2011-12-14
    • 2013-12-19
    • 1970-01-01
    相关资源
    最近更新 更多