2013-03-29 3 views
0

Я пробовал целую неделю и не получил работу. Объекты пользователей не получают обновленный ... Вот важная часть XHTML:Бин из списка не обновляется в JSF

<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 интересная вещь)

+0

В этом ряду много чего происходит. Может быть, даже слишком много. Вы можете начать с похудения, добавив '' к вашему представлению и изменив 'actionListener' на' action' – kolossus

+0

Можете ли вы показать мне полную страницу xhtml и UserBean? –

+0

уверен, я добавил их как ссылки в нижней части сообщения – artgrohe

ответ

0

Ok мой приятель решил проблему сам, добавив return action.getActionEvent()+"?faces-redirect=true";

в атрибуте действия, например <h:commandButton action="page1?faces-redirect=true" value="Page1" />

это решение ajax-delay- shit

Смежные вопросы