0

私は今一週間苦労しましたが、うまくいきません。ユーザーオブジェクトは更新されません...重要なxhtml部分は次のとおりです。

<p:dataTable id="usersTable" var="user" value="#{userBean.allUsers}">  
<p:ajax event="rowToggle" listener="#{userBean.onRowToggle}" update=":form_user_management:tabView_viewUsers:messages" />  
<f:facet name="header">  
    User
</f:facet>  

<p:rowExpansion>  
    <h:panelGrid id="display" columns="2" cellpadding="10" style="width:300px;"  
                 styleClass=" ui-widget-content grid">  

        <p:panel id="panel" header="Benutzer bearbeiten">

            <p:messages id="msgs"/>

            <h:panelGrid columns="3" >
                <h:outputLabel for="firstname" value="Firstname: *" />
                <p:inputText id="firstname" value="#{user.userFirstName}" required="true" label="Firstname">
                    <f:validateLength minimum="2" />
                </p:inputText>
                <p:message for="firstname" display="icon"/>

                <h:outputLabel for="surname" value="Surname: *" />
                <p:inputText id="surname" value="#{user.userLastName}" label="Surname" required="true">
                    <f:validateLength minimum="2" />
                    <p:ajax update="msgSurname" event="keyup" />
                </p:inputText>
                <p:message for="surname" id="msgSurname" display="icon"/>

                <p:commandLink id="changepw" value="Passwort ändern" onclick="dlg.show()" title="Passwort ändern">
                    <f:setPropertyActionListener value="#{user}" target="#{userBean.currentUser}" />
                </p:commandLink>

                <p:commandButton ajax="true" id="btnUpdateUser" value="Update" update=":form_user_management @all" actionListener="#{userBean.updateUser(user)}"/>
                <p:commandButton ajax="true" id="btnDeleteUser" value="Delete" update=":form_user_management" actionListener="#{userBean.deleteUser(user)}"/>  

            </h:panelGrid> 
        </p:panel>  
    </h:panelGrid>
</p:rowExpansion>  

「保存」をクリックすると、展開された行は消えますが、新しい値は表示されず、Java メソッド「userBean.updateUser(user)」はユーザー オブジェクトの古い値のみを取得します。

UserBean のヘッドは次のとおりです。

@Named
@SessionScoped
public class UserBean implements Serializable {

SessionScoped は javax.enterprise.context からのものです

また、古い @ManagedBean のものを使用しようとしましたが、それも役に立ちませんでした。問題は xhtml ファイルと ajax のものにあると思います...ああ、私は他のテンプレートのものを使用しています。

Primefaces 3.4 と Glassfish 3+ の使用

完全な UserBean: http://pastebin.com/yQCgiM4E 完全な Xhtml: http://pastebin.com/19TWt3Dv (110 行目が興味深い)

4

1 に答える 1

0

わかりました私の仲間は追加することで問題を自分で解決しました return action.getActionEvent()+"?faces-redirect=true";

アクション属性で、そのように<h:commandButton action="page1?faces-redirect=true" value="Page1" />

これはajax-delay-shitを解決しました

于 2013-04-04T00:36:04.443 に答える