Moin,
ich habe ein Problem mit der Componente @DataModel und @DataModelSelection. Ich bekomme meine Daten aus einer EJB3-Bean aus dem JBoss-AS und zeige sie mit einer JSF-Seite an. Dort benutze ich "h:dataTable". Das klappt alles wunderbar. Nun möchte ich aber auf einen ausgwählten Kunden zugreifen und diesen bearbeiten. Ich habe das so verstanden, dass dieser sich dann unter @DataModelSelection stehenden Variablen befindet und ich in verändern kann.
Hier mal ein Bischen Code:
Nach der Suche werden alle Kunden in der JSF-Seite angezeigt. Nun möchte ich einen Einzelnen bearbeiten.
Hier der Ausschnitt der JSF-Seite.
Nach dem Betätigen des Buttons bekomme ich in der Bearbeiten-Funkion eine NullPointer-Exc. Und das verstehe ich nicht.
Ich hoffe mir kann jemand helfen. Ich komme absolut nicht weiter. Danke im voraus.
AudiCamper
PS: Ich habe die gleiche Frage auch schon im JSF-Forum gestellt, aber bisher noch keine Antwort erhalten. Es ist schon ein bischen dringend.
ich habe ein Problem mit der Componente @DataModel und @DataModelSelection. Ich bekomme meine Daten aus einer EJB3-Bean aus dem JBoss-AS und zeige sie mit einer JSF-Seite an. Dort benutze ich "h:dataTable". Das klappt alles wunderbar. Nun möchte ich aber auf einen ausgwählten Kunden zugreifen und diesen bearbeiten. Ich habe das so verstanden, dass dieser sich dann unter @DataModelSelection stehenden Variablen befindet und ich in verändern kann.
Hier mal ein Bischen Code:
Code:
@Stateful
@Name("kundehdl")
public class KundeHandler implements KundeHandlerLocal {
private Kunde kunde; // EJB3-Bean
@Logger
private Log log;
@EJB
private ToolRemote toolbean; // EJB3-Bean
@DataModel
private List<Kunde> kunden;
@DataModelSelection
private Kunde selectedKunde;
// Hier suche ich nach der Kundennummer (z.B. 2,3,45)
public String suchenKdNr() {
int ret = 0;
if (suchNr == "") {
FacesMessages.instance().add(
"Kunden-Nummer wird zur Suche benötigt!");
} else {
try {
ret = toolbean.selectKundeDB(suchNr);
kunden = toolbean.getResultList();
} catch (Exception e) {
e.printStackTrace();
}
}
System.out.println(ret);
return "";
}
public String bearbeiten() {
log.info("bearbeiten() mit " + selectedKunde.getNachname() + " aufgerufen");
return "/bearbeiten.xhtml";
}
Hier der Ausschnitt der JSF-Seite.
Code:
<h:outputText value="Keine Daten gefunden" rendered="#{empty kundehdl.kunden}"/>
<h:dataTable value="#{kundehdl.kunden}" var="kunde"
rendered="#{!empty kundehdl.kunden}"
headerClass="usrDataHeader"
rowClasses="usrDataRow1,usrDataRow2"
columnClasses="usrDataColKdNr,usrDataColName,usrDataColStr,usrDataColPlz,usrDataColOrt">
<h:column>
<f:facet name="header">
<h:outputLabel value="KdNr"/>
</f:facet>
<h:outputText value="#{kunde.kunden_Nr}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputLabel value="Name"/>
</f:facet>
<h:outputText value="#{kunde.lang_Name}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputLabel value="Straße"/>
</f:facet>
<h:outputText value="#{kunde.strasse_Hsnr}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputLabel value="Plz"/>
</f:facet>
<h:outputText value="#{kunde.plz}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputLabel value="Ort"/>
</f:facet>
<h:outputText value="#{kunde.ort}" />
</h:column>
<h:column>
<s:button value="Bearbeiten" action="#{kundehdl.bearbeiten}" styleClass="usrFormSubmitBearbeiten" />
</h:column>
</h:dataTable>
Ich hoffe mir kann jemand helfen. Ich komme absolut nicht weiter. Danke im voraus.
AudiCamper
PS: Ich habe die gleiche Frage auch schon im JSF-Forum gestellt, aber bisher noch keine Antwort erhalten. Es ist schon ein bischen dringend.