Primefaces ajax-Reihe-Auswahl-update nicht durchführen-Werte im dialog

Ich habe eine Daten-Tabelle, erscheint ein detail-dialog auf die Zeile, wählen Sie Ereignis. Aber der dialog zeigt nicht alle Werte des ausgewählten Objekts. Ich kann sehen, dass das ausgewählte Objekt wird ordnungsgemäß während der debug-Sitzung.

Die Tabelle besteht aus Reihen von Studenten und es ist wohl die Anzeige einer popup-dialog zeigt detaillierte Informationen über die Zeile selection.

Den StudentBean:

@Named(value = "studentBean")
@SessionScoped
public class StudentBean {

        @Inject
        private UserFacade userFacade;
        private List<User> studentList;
        private User selectedStudent;


        public StudentBean() {
        }

        @PostConstruct
        public void init() {
            studentList = userFacade.findAll();

        }


        public List<User> getStudentList() {
            return studentList;

        }


        public void setStudentList(List<User> studentList) {
            this.studentList = studentList;
        }


        public User getSelectedStudent() {
            return selectedStudent;
        }


        public void setSelectedStudent(User student) {
            this.selectedStudent = student;
        }

        public void onRowSelect(SelectEvent event) {
        }

        public void onRowUnselect(UnselectEvent event) {
            //FacesMessage msg = new FacesMessage("Student Unselected", ((User) event.getObject()).getFirstName());  
            //FacesContext.getCurrentInstance().addMessage("messages", msg);  
        }


    }

Der Passenden Seite:

<?xml version='1.0' encoding='UTF-8' ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:ui="http://java.sun.com/jsf/facelets"
          xmlns:h ="http://java.sun.com/jsf/html"
          xmlns:p ="http://primefaces.org/ui">

        <body>

            <ui:composition template="./layout.xhtml">

                <ui:define name="content">
                    <h:form  id="studentForm"> 


                        <p:dataTable var="student" value="#{studentBean.studentList}" 
                                     selectionMode="single" 
                                     selection="#{studentBean.selectedStudent}" rowKey="#{student.id}">  

                            <p:ajax event="rowSelect" listener="#{studentBean.onRowSelect}" 
                                    update=":studentForm:studentDetail" oncomplete="studentDialog.show()" 
                                    global="true" immediate="true"
                                    />  
                            <p:ajax event="rowUnselect" listener="#{studentBean.onRowUnselect}" /> 


                            <p:column headerText="First Name">  
                                <h:outputText value="#{student.firstName}" />  
                            </p:column>  

                            <p:column headerText="Last Name">  
                                <h:outputText value="#{student.lastName}" />  
                            </p:column>  

                            <p:column headerText="Student ID">  
                                <h:outputText value="#{student.studentid}" />  
                            </p:column>  

                        </p:dataTable>  



                        <p:dialog id="dialog" header="Student Detail"  widgetVar="studentDialog" resizable="false"  
                                  showEffect="fade" hideEffect="fade" appendToBody="true">  

                            <h:panelGrid id="studentDetail" columns="2" cellpadding="4">  

                                <h:outputText value="First Name: " />  
                                <h:outputText value="#{studentBean.selectedStudent.firstName}" />  

                                <h:outputText value="Last Name: " />  
                                <h:outputText value="#{studentBean.selectedStudent.lastName}" />  

                            </h:panelGrid>  
                        </p:dialog> 
                </ui:define>

            </ui:composition>

        </body>
    </html>

Bin ich nach den KFZ-Daten Tabelle B. von der Primefaces-Showcase-Seite. Es scheint so einfach da, aber ich kann nicht scheinen, um die Anzeige der selectedStudent Informationen egal was ich mache. Der dialog zeigt sich fein, aber die firstName-und lastName-Werte leer sind.

Ich habe versucht, die folgenden:

  • Setzen den dialog in eine andere form
  • Mit process="@form"
  • Mit process=":studentForm:studentDetail"

Was mache ich falsch?

Primefaces 3.3.1,
Glassfish 3.1.2

  • standardmäßig wird das Formular verarbeitet. auch, bewegen Sie den dialog, um eine andere form wird nicht helfen. versuchen Sie, die Beseitigung der unmittelbaren Attribut (oder setzen Sie es auf false, was die Voreinstellung ist). Ich sehe nicht, dass in der Vitrine
  • Hi @Damian, ich habe versucht, diesem Beispiel zu Folgen, so nah wie ich kann, ohne die immediate-Attribut auf den ersten. Es ist einfach weigerte zu arbeiten 🙁 .
  • Ich stehe vor dem gleichen problem. Hast du eine Lösung finden?
  • Wickel-Tisch mit einem panelGroup und versuchen zu gehen, dass panelGroup im Prozess.
InformationsquelleAutor Random Joe | 2012-08-06
Schreibe einen Kommentar