1

PrimefacesとAjaxを使用して(または使用せずに)部分ごとにxhtmlページをレンダリングする方法。ユーザーがチェックボックスを押すと、メッセージが表示されますが、usernamecontentが更新されることはありません。その場合、パネルグリッドを更新するにはどうすればよいですか?私は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>

ありがとうサミ

4

1 に答える 1

1

コンポーネントusernamecontentは、それ自体がサーバー側で条件付きでレンダリングされます。コンポーネントをajax-updateできるようにするには、問題のコンポーネントが常にレンダリングされるようにする必要があります。これは、最終的にはJavaScriptであり、クライアント側でコンポーネントを更新する必要があるためです。

コンテンツを更新するためにJavaScriptが常にアクセスできるように、常にレンダリングされる別のコンポーネントでラップする必要があります。

<h:panelGroup id="usernamecontent">
    <h:panelGrid columns="2" rendered="#{testController.selected.asUser}">
        ...
    </h:panelGrid>
</h:panelGroup>
于 2012-04-04T21:11:34.460 に答える