JSF Datenübergabe - Erste Schritte

emk

Neues Mitglied
Hallo, ich versuche mich gerade bei meinen ersten Schritten mit JavaServerFaces. Habe jedoch einen Punkt erreicht, wo ich leider nicht mehr weiter komme.

Ich habe 2 Dateien, eine index.xhtml und eine NameData.java.

in der Index.xhtml soll eine Kundennummer ausgewählt werden, und über die NameData.java sollen die zugehörigen Daten ausgegeben werden. Aber, es klappt nicht. Wäre nett, wenn sich das mal jemand anschauen und mir den entscheidenden Tip geben könnte.

NameData.java
Java:
import java.awt.event.ActionEvent;
import java.io.Serializable;
import java.util.LinkedList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;

@Named
@SessionScoped
public class NameData implements Serializable
	{
		private List<String> kundennummern;
		private List<String> vornamen;
		private List<String> nachnamen;
		private int aktIndex = 0;
		private String aktKundennummer;

		@PostConstruct
		private void init()
			{
				kundennummern = new LinkedList<String>();
				vornamen = new LinkedList<String>();
				nachnamen = new LinkedList<String>();

				kundennummern.add("Kundennummer");
				vornamen.add("Vornamen");
				nachnamen.add("Nachnamen");

				kundennummern.add("100001");
				vornamen.add("VN1");
				nachnamen.add("NN1");

				kundennummern.add("100002");
				vornamen.add("VN2");
				nachnamen.add("NN2");

				kundennummern.add("100003");
				vornamen.add("VN3");
				nachnamen.add("NN3");
			}

		public List<String> getKundennummern()
			{
				return kundennummern;
			}

		public void setKundennummern(List<String> x)
			{
			}

		public void setAktuellenKunden(ActionEvent event)
			{
				// nur zu Testzwecken einen "Kunden" weiterspringen... klappt
				// aber nicht.
				aktIndex++;
			}

		public String getAktuellenKunden()
			{
				return aktKundennummer;
			}

		public String getVorname()
			{
				return vornamen.get(aktIndex);
			}

		public String getNachname()
			{
				return nachnamen.get(aktIndex);
			}

		public void setVorname(String x)
			{
			}

		public void setNachname(String x)
			{
			}

	}

index.xhtml
Java:
<!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:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core">

<h:head>
	<title>Kundenkartei</title>
	<h:outputStylesheet library="css" name="styles.css" />
</h:head>

<h:body>

	<h:form id="form">

		<h:panelGrid columns="1">

			<h:selectOneMenu id="kd" actionListener="#{nameData.aktuellenKunden}">
				<f:selectItems value="#{nameData.kundennummern}" />
				<f:ajax execute="form:kd" render="form:kd form:vn form:nn" />
			</h:selectOneMenu>

		</h:panelGrid>

		<h:panelGrid columns="2">

			<h:outputLabel> Vorname: </h:outputLabel>
			<h:inputText id="vn" value="#{nameData.vorname}"> #{nameData.vorname} </h:inputText>

			<h:outputLabel> Nachname: </h:outputLabel>
			<h:inputText id="nn" value="#{nameData.nachname}"> #{nameData.nachname} </h:inputText>

		</h:panelGrid>

	</h:form>

</h:body>

</html>
 
S

Sym

Gast
Was klappt denn ganz genau nicht?

Zwei Dinge, die mir aufgefallen sind:

Code:
<h:inputText id="nn" value="#{nameData.nachname}"> #{nameData.nachname} </h:inputText>

Die innere EL ist nicht notwendig. Nutze:

Code:
<h:inputText id="nn" value="#{nameData.nachname}" />

Statt

Code:
<h:outputLabel> Vorname: </h:outputLabel>

nutze

Code:
<h:outputLabel value="Vorname:" />
 

emk

Neues Mitglied
Mein Problem war, das ich den Wert, den ich ausgewählt habe (Kundennummer) nicht in meinem Java-Code benutzen konnte... da er wohl nicht übergeben wurde.

Habe zuerst einmal deine Änderungen übernommen und bin dann auch noch auf die passende Idee gekommen,
Java:
<h:selectOneMenu id="kd" ActionListener="#{nameData.aktuellerKunde}">
in
Java:
<h:selectOneMenu id="kd" value="#{nameData.aktuellerKunde}">
zu ändern. Jetzt klappt es. Danke dir für deine Hilfe.

Gruß
 

Ähnliche Java Themen

Neue Themen


Oben