Primefaces Datatable Zeile Auswahl
Edit2 - habe ich Hinzugefügt faces-config.xml am Ende der post.
Ich habe Probleme mit Primefaces datatable Zeile Auswahl. Ich möchte in der Lage sein, um eine Zeile zu wählen, und verschieben Sie die Daten in ein Objekt, dann kann ich das manipulieren. Ich bin mit einem Modell basierend auf der primefaces-showcase Beispiel, aber es funktioniert nicht. Ehrlich gesagt, ich bin running out of Ideen, was falsch ist. Unten ist mein xhtml und managedbean.
<html xmlns="http://www.w3c.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui" >
<h:head>
</h:head>
<h:body>
<center>
<h:form id="form">
<p:dataTable id="personTable" var="client" value="#{tableBean.persons}" rowKey="#{client.name}"
selection="#{tableBean.person}" selectionMode="single">
<f:facet name="header">
Click "View" button after selecting a row to see details
</f:facet>
<p:column headerText="Name">
#{client.name}
</p:column>
<p:column headerText="Address">
#{client.address}
</p:column>
<p:column headerText="Phone" >
#{client.phone}
</p:column>
</p:dataTable>
<h:panelGrid id="display" columns="2" cellpadding="4">
<h:outputText value="Name:" />
<h:outputText value="#{tableBean.person.name}" />
<h:outputText value="Address:" />
<h:outputText value="#{tableBean.person.address}" />
<h:outputText value="Phone:" />
<h:outputText value="#{tableBean.person.phone}" />
</h:panelGrid>
</h:form>
</center>
</h:body>
</html>
Managed Bean hier:
package com.dave.test;
import java.util.ArrayList;
import java.util.List;
public class TableBean {
private List<Person> persons = null;
private Person person;
public TableBean() {
persons = new ArrayList<Person>();
persons.add(new Person("Jimmy", "18 Maple", "337-278-1019"));
persons.add(new Person("Sally", "47 Oak", "787-509-3819"));
persons.add(new Person("Roger", "754 Fifth Ave.", "926-420-8219"));
persons.add(new Person("Mimi", "891 2nd St.", "713-371-8632"));
}
public List<Person> getPersons() {
return persons;
}
public void setPersons(List<Person> persons) {
this.persons = persons;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
}
Dank, Dave
<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="2.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-
facesconfig_2_0.xsd">
<managed-bean>
<managed-bean-name>tableBean</managed-bean-name>
<managed-bean-class>com.dave.test.TableBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
</faces-config>
- Sind Ihre managed beans erklärt wird, in
faces-config.xml
oder hast du vergessen, die Anmerkungen? Wir müssen sehen, warum die managed bean ist nicht halten der Daten nach einem server-Anfrage. Könnten Sie bitte Ihre faces-config.xml? - Danke für Antworten, ich habe gerade am Ende meines posts.
- Ich bin nicht zu sehen, Ihre faces-config.xml Datei @Dave.
- Off-topic, aber weißt du das
<center></center>
- tag ist veraltet, richtig? - Okay, es gibt jetzt (verloren habe das erste mal irgendwie). Wie für den center, ja, aber das ist nur ein test-Programm für Primefaces. Ich werde fancy, nachdem ich diese Frage eingestellt, in meinem Kopf.
- Ok also was ist jetzt genau das problem? Sie sagen, dass Sie versuchen, wählen Sie eine Zeile, um die Daten, aber was passiert, wenn Sie klicken Sie auf die Zeile?
- stackoverflow.com/questions/30054708/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich gehe davon aus, dass, wenn Sie klicken Sie auf die Zeile, gibt es keine Daten. Das ist, weil Sie mit einem request-scoped bean. Dies bedeutet, dass beim laden der Seite werden die Bohnen aufgefüllt wird. Nachdem die Seite geladen ist, wird die bean ist Weg.
Ich würde vorschlagen, ändern Ihren Umfang zu ViewScope zu sehen, ob das hilft überhaupt.
Auch, wenn du mit jsf 2.0 verwenden, können Sie Beschriftungen anstelle der faces-config.xml Datei. Ihre Unterstützer würde wie folgt Aussehen:
Nun können Sie Ihren managed-bean-Zeug aus faces-config.xml.
BEARBEITEN
Ich habe gerade gemerkt, dass man nicht über eine ajax-Ereignis behandeln die Zeile Auswahl. Wenn Sie auf der instant primefaces Zeile der Auswahl, die Sie brauchen, um beachten Sie, dass Sie mit
<p:ajax event="rowSelect" ..../>
zusammen mit einer Methode in backing-bean, um diese zu bewältigen.lo único que debes hacer es al bean TableBean.java quitarle(borrar) el @SessionScoped y a la clase Car.java quitarle @ManagedBean(name = "Auto") , @SessionScoped , implementiert Serializable.
esta es una clase clase einfache no tiene porque ser un managebean unicamente Sohn datos.
Übersetzt:
Alles, was Sie tun müssen, ist zu nehmen TableBean.java bean (löschen) @SessionScoped und nehmen Car.java Klasse @ManagedBean (name = "Auto"), @SessionScoped, implementiert Serializable. Diese Klasse ist eine einfache Klasse müssen nicht sein, managebean nur Daten sind.