JSF h:selectOneMenu - änderungen nicht übernommen

NoXiD

Bekanntes Mitglied
Hallo!
Ich habe ein Problem:
Wenn ich bei meiner selectOneMenu liste eine Änderung durchführe, wird diese nicht gespeichert. Ich finde den Fehler im System einfach nicht :/

index.xhtml
HTML:
<h:dataTable var="s" value="#{sectionBean.sectionList}" border="1"
						styleClass="table">
						<h:column>
							<f:facet name="header">
								<h:outputText value="Bezeichnung" />
							</f:facet>
							<h:outputText value="#{s.description}"
								rendered="#{not s.editable}" />
							<h:inputText value="#{s.description}" rendered="#{s.editable}" />
						</h:column>
						<h:column>
							<f:facet name="header">
								<h:outputText value="Vorgesetzter" />
							</f:facet>
							<h:outputText
								value="#{s.manager.surename}, #{s.manager.forename}"
								rendered="#{not s.editable}" />
							<h:selectOneMenu value="#{s.manager.userID}"
								styleClass="inputlabel" id="Vorgesetzter"
								rendered="#{s.editable}" >
								<f:selectItem
									itemLabel="#{s.manager.surename}, #{s.manager.forename}"
									itemValue="#{s.manager.userID}" />
								<f:selectItems value="#{userBean.userList}" var="us"
									itemLabel="#{us.surename}, #{us.forename}"
									itemValue="#{us.userID}" />
							</h:selectOneMenu>
						</h:column>
						<h:column>
							<h:commandButton value="bearbeiten"
								action="#{sectionBean.switchEdit(s)}" 
								rendered="#{not s.editable}" />
							<h:commandButton value="speichern"
								action="#{sectionBean.updateSection(s)}"
								rendered="#{s.editable}" />
								#{sectionBean.sectionDAO.section.description}
							<h:commandButton value="abbrechen"
								action="#{sectionBean.switchEdit(s)}"
								rendered="#{s.editable}" />
						</h:column>
						<h:column>
							<h:commandButton value="löschen"
								action="#{sectionBean.deleteSection(s)}" />
						</h:column>
					</h:dataTable>

SectionBean:
Java:
package at.ac.htlperg.beans;

import java.util.List;

import javax.faces.bean.ManagedBean;

import at.ac.htlperg.dao.SectionDAO;
import at.ac.htlperg.model.Section;

@ManagedBean
public class SectionBean {
	SectionDAO sectionDAO;

	public SectionBean() {
		sectionDAO = new SectionDAO();
	}

	public SectionDAO getSectionDAO() {
		return sectionDAO;
	}

	public void setSectionDAO(SectionDAO sectionDAO) {
		this.sectionDAO = sectionDAO;
	}

	public List<Section> getSectionList() {
		return sectionDAO.getSectionList();
	}

	public String deleteSection(Section s) {
		sectionDAO.deleteSection(s);
		return null;
	}

	public String switchEdit(Section s) {
		sectionDAO.switchEdit(s);
		return null;
	}

	public String saveSection() {
		sectionDAO.saveSection(sectionDAO.getSection());
		return "/secured/sealed/sections.xhtml";
	}

	public String updateSection(Section s) {
		sectionDAO.updateSection(s);   //Greift auf DB zu und updated die Übergebene Section
		this.switchEdit(s);                   //Macht Datensatz wieder "unbearbeitbar"
		return null;
	}
}
 

jwiesmann

Bekanntes Mitglied
Hast du mal geguckt ob s.manager evtl. leer / null ist?
Dann kann nämlich nicht s.manager.userID gesetzt werden.

erstell dir zum Testen in deiner Bean einfach mal eine
Java:
Integer selectedId;
// getter
// setter...
und schreib dann in deinem JSF Code:
[XML]<h:selectOneMenu value="#{sectionBean.selectedId}"[/XML]
und guck mal ob diese ausgelesen wird...

evtl. musst du in deiner Liste noch zuvor
Java:
if (s.manager==null) manager = new Manager();
s.setManager(manager);
// o.ä.
aufrufen...
 
Zuletzt bearbeitet:

NoXiD

Bekanntes Mitglied
Hallo!
Habs mal mit dem Debugger probiert, im meiner Variable s.manager.userid befindet sich direkt nach dem Methodenaufruf von updateSection(s) immer noch die alte UserID, nicht die neu ausgewählte :O

ich blick grad ned durch...
 

knoppers

Bekanntes Mitglied
Hallo!
Habs mal mit dem Debugger probiert, im meiner Variable s.manager.userid befindet sich direkt nach dem Methodenaufruf von updateSection(s) immer noch die alte UserID, nicht die neu ausgewählte :O

ich blick grad ned durch...


Schreib mal in deiner ManagedBean über

Java:
@ManagedBean

...

Java:
@SessionScoped

dann denke ich mal, das dies dein Problem löst.
 

knoppers

Bekanntes Mitglied
Sollte dies dann immer noch nicht die Lösung sein, dann probier mal

[XML]onchange="submit()"[/XML]

bei den Tag "h:selectOneMenu" mit zugeben.


[XML]<h:selectOneMenu value="#{s.manager.userID}"
styleClass="inputlabel" id="Vorgesetzter"
rendered="#{s.editable}" >
<f:selectItem
itemLabel="#{s.manager.surename}, #{s.manager.forename}"
itemValue="#{s.manager.userID}" />
<f:selectItems value="#{userBean.userList}" var="us"
itemLabel="#{us.surename}, #{us.forename}"
itemValue="#{us.userID}" />
</h:selectOneMenu>[/XML]
 

NoXiD

Bekanntes Mitglied
Hallo, danke erstmal für die Antwort!
@SessionScoped hat leider nichts genützt, bei onchange="submit()" setzt sich der Wert wieder auf den Ursprung?!
 

JimPanse

Bekanntes Mitglied
Hi,
Java:
<h:selectOneMenu value="#{s.manager.userID}"
                                styleClass="inputlabel" id="Vorgesetzter"
                                rendered="#{s.editable}" >
                                <f:selectItem
                                    itemLabel="#{s.manager.surename}, #{s.manager.forename}"
                                    itemValue="#{s.manager.userID}" />
                                <f:selectItems value="#{userBean.userList}" var="us"
                                    itemLabel="#{us.surename}, #{us.forename}"
                                    itemValue="#{us.userID}" />
                            </h:selectOneMenu>

1. Mit #{s.manager.userID} -> #{us.userID} wird jediglich die Id überschrieben und kein Objekt zugewiesen wird (ist das so gewohlt?)
2. Bei SessionScope musst du dich darum kümmern das die Liste neu geladen wird.

Der Lösungsansatz wäre:
1. Statt der id das Objekt zuweisen, hierfür brauchst du einen Konverter (HTML kennt nur Strings und keine java Objekte)
-> http://www.java-forum.org/allgemein...-0-manytoone-annotation-entity-jpa-2-0-a.html
2. Einen ValueChangeListener der die Änderung ausführt und die Liste mit der Änderung neu lädt
-> JSF 2 valueChangeListener example

Greetz
 

NoXiD

Bekanntes Mitglied
Hallo!
Danke für deine Antwort. Habs nun mal so wie in den Links beschrieben probiert, leider ohne Erfolg (mein Layout ist auch etwas anders). Bin leider noch JSF bzw. JEE Anfänger :/ Hier mal mein derzeitiger Aufbau:

User(User.java)
Java:
package at.ac.htlperg.model;

import java.sql.Timestamp;

public class User {
	private int userID;
	private String forename;
	private String surename;
	private String username;
	private String password;
	private Timestamp lastLogged;
	private String authority;
	private Cart cart;
	private Section section;

	public String getAuthority() {
		return authority;
	}

	public void setAuthority(String authority) {
		this.authority = authority;
	}

	public int getUserID() {
		return userID;
	}

	public void setUserID(int userID) {
		this.userID = userID;
	}

	public String getForename() {
		return forename;
	}

	public void setForename(String forename) {
		this.forename = forename;
	}

	public String getSurename() {
		return surename;
	}

	public void setSurename(String surename) {
		this.surename = surename;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public Cart getCart() {
		return cart;
	}

	public void setCart(Cart cart) {
		this.cart = cart;
	}

	public Section getSection() {
		return section;
	}

	public void setSection(Section section) {
		this.section = section;
	}

	public Timestamp getLastLogged() {
		return lastLogged;
	}

	public void setLastLogged(Timestamp lastLogged) {
		this.lastLogged = lastLogged;
	}
}

dazugehöriges UserDAO(UserDAO.java)
Java:
package at.ac.htlperg.dao;

import java.util.List;

import at.ac.htlperg.database.DataRepository;
import at.ac.htlperg.model.User;

public class UserDAO {
	DataRepository dataRepository;

	public UserDAO() {
		dataRepository = new DataRepository();
	}

	public List<User> getUserList() {
		return dataRepository.getUserList();
	}

	public User logUser(String username, String password) {
		for (User user : this.getUserList()) {
			if (user.getUsername().equalsIgnoreCase(username)
					&& user.getPassword().equals(password)) {
				return user;
			}
		}
		return null;
	}
}

UserBean.java
Java:
package at.ac.htlperg.beans;

import java.util.List;

import javax.faces.bean.ManagedBean;

import at.ac.htlperg.dao.UserDAO;
import at.ac.htlperg.model.User;

@ManagedBean
public class UserBean {
	UserDAO userDAO;

	public UserBean() {
		userDAO = new UserDAO();
	}

	public List<User> getUserList() {
		return userDAO.getUserList();
	}

	public User findByID(int id) {
		User u = null;
		for (User user : this.getUserList()) {
			if (user.getUserID() == id) {
				u = user;
			}
		}
		return u;
	}
}

Section(Section.java)
Java:
package at.ac.htlperg.model;

public class Section {
	private int sectionID;
	private String description;
	private User manager;
	private boolean editable;

	public boolean isEditable() {
		return editable;
	}

	public void setEditable(boolean editable) {
		this.editable = editable;
	}

	public int getSectionID() {
		return sectionID;
	}

	public void setSectionID(int sectionID) {
		this.sectionID = sectionID;
	}

	public String getDescription() {
		return description;
	}

	public void setDescription(String description) {
		this.description = description;
	}

	public User getManager() {
		return manager;
	}

	public void setManager(User manager) {
		this.manager = manager;
	}

}

dazugehöriges SectionDAO (SectionDAO.java)
Java:
package at.ac.htlperg.dao;

import java.util.List;

import at.ac.htlperg.database.DataRepository;
import at.ac.htlperg.model.Section;
import at.ac.htlperg.model.User;

public class SectionDAO {
	DataRepository dataRepository;
	private Section section;

	public SectionDAO() {
		dataRepository = new DataRepository();
		section = new Section();
		section.setManager(new User());
	}

	public List<Section> getSectionList() {
		return dataRepository.getSectionList();
	}

	public Section getSection() {
		return section;
	}

	public void setSection(Section section) {
		this.section = section;
	}

	public String insertNewSection() {

		return null;
	}

	public int deleteSection(Section s) {
		dataRepository.deleteSection(s);
		return 1;
	}

	public int switchEdit(Section s) {
		dataRepository.switchEdit(s);
		return 1;
	}

	public int saveSection(Section s) {
		dataRepository.saveSection(s);
		return 1;
	}

	public int updateSection(Section s) {
		dataRepository.updateSection(s);
		return 1;
	}

}

SectionBean.java
Java:
package at.ac.htlperg.beans;

import java.util.List;

import javax.faces.bean.ManagedBean;

import at.ac.htlperg.dao.SectionDAO;
import at.ac.htlperg.model.Section;

@ManagedBean
public class SectionBean {
	SectionDAO sectionDAO;

	public SectionBean() {
		sectionDAO = new SectionDAO();
	}

	public SectionDAO getSectionDAO() {
		return sectionDAO;
	}

	public void setSectionDAO(SectionDAO sectionDAO) {
		this.sectionDAO = sectionDAO;
	}

	public List<Section> getSectionList() {
		return sectionDAO.getSectionList();
	}

	public String deleteSection(Section s) {
		sectionDAO.deleteSection(s);
		return null;
	}

	public String switchEdit(Section s) {
		sectionDAO.switchEdit(s);
		return null;
	}

	public String saveSection() {
		sectionDAO.saveSection(sectionDAO.getSection());
		return "/secured/sealed/sections.xhtml";
	}

	public String updateSection(Section s) {
		sectionDAO.updateSection(s);
		this.switchEdit(s);
		return null;
	}
}

die Klasse die auf die DB zugreift (DataRepository.java)
Java:
package at.ac.htlperg.database;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;

import at.ac.htlperg.model.Section;
import at.ac.htlperg.model.User;
import at.ac.htlperg.util.HibernateUtil;

public class DataRepository {

	public List<User> getUserList() {
		Session session = HibernateUtil.getSessionFactory().openSession();
		List<User> users = session.createQuery("from User").list();
		session.close();
		return users;
	}

	public List<Section> getSectionList() {
		Session session = HibernateUtil.getSessionFactory().openSession();
		List<Section> sections = session.createQuery("from Section").list();
		session.close();
		return sections;
	}

	public int deleteSection(Section s) {
		Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction transaction = session.beginTransaction();
		session.delete(s);
		transaction.commit();
		session.close();
		return 1;
	}

	public int switchEdit(Section s) {
		if (s.isEditable()) {
			s.setEditable(false);
		} else {
			s.setEditable(true);
		}
		Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction transaction = session.beginTransaction();
		session.update(s);
		transaction.commit();
		session.close();
		return 1;
	}

	public int saveSection(Section section) {
		Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction transaction = session.beginTransaction();
		session.save(section);
		transaction.commit();
		session.close();
		return 1;
	}

	public int updateSection(Section s) {
		Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction transaction = session.beginTransaction();
		session.saveOrUpdate(s);
		session.flush();
		transaction.commit();
		session.close();
		return 1;
	}
}

und meine Webseite (sections.xhtml)
HTML:
<!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"
	xmlns:ui="http://java.sun.com/jsf/facelets">

<h:head>
	<title>HSP-H&ouml;dlmayr Service Portal</title>

	<!-- general meta -->
	<meta http-equiv="Content-Type"
		content="application/xhtml+xml; charset=utf-8" />
	<meta name="author" content="Mayr Alexander" />
	<meta name="keywords" content="" />
	<meta name="description" content="" />

	<!-- style definitions-->
	<link
		href="#{facesContext.externalContext.requestContextPath}/webResources/styles/admin_home.css"
		rel="stylesheet" type="text/css" />

	<link
		href="#{facesContext.externalContext.requestContextPath}/webResources/styles/admin_listSection.css"
		rel="stylesheet" type="text/css" />

	<!-- jquery definition-->
	<script type="text/javascript"
		src="#{facesContext.externalContext.requestContextPath}/webResources/jquery/jquery.js"></script>

</h:head>
<body>
	<div id="wrapper">
		<div id="header">
			<img
				src="#{facesContext.externalContext.requestContextPath}/webResources/images/hsp.gif"
				style="width: 50%" />
			<div id="navBar">
				<div>
					<ul id="nav">
						<li><a
							href="#{facesContext.externalContext.requestContextPath}/secured/sealed/home.xhtml">Home</a></li>
						<li><a
							href="#{facesContext.externalContext.requestContextPath}/secured/sealed/users.xhtml">User</a></li>
						<li class="on"><a href="#">Sections</a></li>
						<li><a
							href="#{facesContext.externalContext.requestContextPath}/secured/sealed/services.xhtml">Services</a></li>
						<li><a
							href="#{facesContext.externalContext.requestContextPath}/secured/sealed/info.xhtml">Info</a></li>
					</ul>
				</div>
			</div>
		</div>

		<div id="main-section">
			<div id="left">
				<img
					src="#{facesContext.externalContext.requestContextPath}/webResources/images/section.gif" />
				<h:form>
				Als #{pageController.username} eingeloggt 
					<h:commandButton action="#{pageController.logout()}" value="logout" />
				</h:form>
			</div>

			<div id="right">right</div>

			<div id="center">
				<h:form>
					<h1>Alle Sections</h1>

					<h:dataTable var="s" value="#{sectionBean.sectionList}" border="1"
						styleClass="table">
						<h:column>
							<f:facet name="header">
								<h:outputText value="Bezeichnung" />
							</f:facet>
							<h:outputText value="#{s.description}"
								rendered="#{not s.editable}" />
							<h:inputText value="#{s.description}" rendered="#{s.editable}" />
						</h:column>
						<h:column>
							<f:facet name="header">
								<h:outputText value="Vorgesetzter" />
							</f:facet>
							<h:outputText
								value="#{s.manager.surename}, #{s.manager.forename}"
								rendered="#{not s.editable}" />
							<h:selectOneMenu value="#{s.manager}"
								styleClass="inputlabel" id="Vorgesetzter"
								rendered="#{s.editable}">
								<f:selectItem itemValue="${null}" itemLabel="-" />
								<f:selectItems value="#{userBean.userList}" var="us"
									itemLabel="#{us.surename}, #{us.forename}"
									itemValue="#{us}" />
							</h:selectOneMenu>
						</h:column>
						<h:column>
							<h:commandButton value="bearbeiten"
								action="#{sectionBean.switchEdit(s)}"
								rendered="#{not s.editable}" />
							<h:commandButton value="speichern"
								action="#{sectionBean.updateSection(s)}"
								rendered="#{s.editable}" />
							<h:commandButton value="abbrechen"
								action="#{sectionBean.switchEdit(s)}" rendered="#{s.editable}" />
						</h:column>
						<h:column>
							<h:commandButton value="löschen"
								action="#{sectionBean.deleteSection(s)}" />
						</h:column>
					</h:dataTable>
					<input type="button" value="Neue Section anlegen"
						onClick="parent.location='#{facesContext.externalContext.requestContextPath}/secured/sealed/sections_add.xhtml'" />
				</h:form>
			</div>
		</div>
		<!-- end of main-section -->

		<div id="footer">
			<div id="footerText">
				<img
					src="#{facesContext.externalContext.requestContextPath}/webResources/images/footer_l.gif"
					alt=""></img>Copyright &copy; 2011 Mayr Alexander, All Rights
				Reserved. | HSP - H&ouml;dlmayr Service Portal<img
					src="#{facesContext.externalContext.requestContextPath}/webResources/images/footer_r.gif"
					alt=""></img>
			</div>
		</div>
	</div>
	<!-- end of wrapper -->
</body>
</html>
 

jwiesmann

Bekanntes Mitglied
Hi NoXiD

Erstmal vorweg, wenn du ganz neu bei JSF etc. bist, solltest du dich vielleicht direkt mit ein paar Frameworks vertraut machen (PrimeFaces, RichFaces Project Page - JBoss Community).
Damit wird dir unter Umständen schon etwas arbeit abgenommen.

Wenn es dir nur ums Verständnis geht, muss du das natürlich nicht.
Aber back to topic:

Der Fehler liegt bei dir darin, dass du (bei deinem neuen Versuch) versucht ein Object zu übergeben ohne das du einen Converter dafür geschrieben hast.

Um es kurz zu machen:
Einfacher ist es in dem Fall, die UserID in der Bean zu speichern und anschliessend in der Update Methode das Object (user) zu suchen und der Section zuzuordnen.
Ein Lösungsansatz wäre folgender:

Java:
// füge Folgenden Code in deine SectionBean ein:
import javax.faces.context.FacesContext;
// ...

 Integer selectedUserId;

// ...
    public String updateSection(Section s) {
        UserBean userBean = findBean( "userBean", UserBean.class);        
        User selectedUser = userBean.findByID(getSelectedUserId());
        s.setManager(selectedUser);       
        sectionDAO.updateSection(s);
        this.switchEdit(s);
        return null;
    }

    public Integer getSelectedUserId() {
        return selectedUserId;
    }

    public void setSelectedUserId(Integer selectedUserId) {
        this.selectedUserId = selectedUserId;
    }
    
    public static <T> T findBean(String beanName, Class<T> beanClass) {
        FacesContext context = FacesContext.getCurrentInstance();
        return beanClass.cast(context.getApplication().evaluateExpressionGet(context, "#{" + beanName + "}", beanClass));
    }

nun änderst du noch dein JSF Seite zu:

[XML]
<h:selectOneMenu value="#{sectionBean.selectedUserId}"
styleClass="inputlabel" id="Vorgesetzter"
rendered="#{s.editable}">
<f:selectItem itemValue="${null}" itemLabel="-" />
<f:selectItems value="#{userBean.userList}" var="us"
itemLabel="#{us.surename}, #{us.forename}"
itemValue="#{us.userID}" />
</h:selectOneMenu>[/XML]

Der Unterschied ist nun, dass du die ID in der SectionBean speicherst und dann einfach das Object beim Update suchst und der Section zuweist.
Ich hoffe es klappt nun :)

Gruß Jörg
 

JimPanse

Bekanntes Mitglied
Hi,

du kannst auch die Idee von meinem Vorgänger aufgreifen dann wäre die Impl ungefähr so:

Java:
<h:selectOneMenu value="#{userBean.selectedId}" 
                                valueChangeListener="#{userBean.changeSection}"
                                styleClass="inputlabel"
                                rendered="#{s.editable}" >
                       <f:ajax execute="@this" event="valueChange" render="<id der Table>"/>
                                
                                  <f:selectItems value="#{userBean.userList}" var="us"
                                    itemLabel="#{us.surename}, #{us.forename}"
                                    itemValue="#{us.userID}" />
                            </h:selectOneMenu>

Java:
// @SessionScope
@ManagedBean
public class UserBean {

private Long selectedId;

public void changeSection(ValueChangeEvent event){

selectedId = (Long) event.getNewValue();

// Logik ausführen

// Bei SessionScope tabelle neu laden

}

public void edit(Section s){
// id des ausgewählten Objekts setzen
selectedId = s.getUserId();
}
}
 

NoXiD

Bekanntes Mitglied
Hallo!
@jwiesmann: Danke für deine Antwort, ich werd mir die vorgeschlagenen Technologien mal zu Gemüte führen ;)

@JimPanse: Auch Danke an deinen Vorschlag, jedoch funktionierts noch nicht.

HTML:
<h:selectOneMenu value="#{sectionBean.selectedID}"
								styleClass="inputlabel" id="Vorgesetzter"
								rendered="#{s.editable}"
								valueChangeListener="#{sectionBean.changeUser()}">
								<f:selectItem itemValue="${null}" itemLabel="-" />
								<f:selectItems value="#{userBean.userList}" var="us"
									itemLabel="#{us.surename}, #{us.forename}" itemValue="#{us}" />
							</h:selectOneMenu>

Java:
public void changeUser(ValueChangeEvent event) {
		selectedID = (Integer) event.getNewValue();
	}

	public String updateSection(Section s) {
		UserBean ub = new UserBean();
		User selectedUser = null;
		for (User user : ub.getUserList()) {
			if (user.getUserID() == this.selectedID) {
				selectedUser = user;
			}
		}

		s.setManager(selectedUser);
		sectionDAO.updateSection(s);
		this.switchEdit(s);
		return null;
	}

bekomme folgenden Fehler:
"[javax.enterprise.resource.webcontainer.jsf.renderkit] (http--127.0.0.1-8080-1) WARNUNG: FacesMessage(s) wurde(n) in die Warteschlange gestellt, aber möglicherweise nicht angezeigt.
sourceId=j_idt10:j_idt12:1:Vorgesetzter[severity=(ERROR 2), summary=(j_idt10:j_idt12:1:Vorgesetzter: Bei 'at.ac.htlperg.model.User@215060fe' muss es sich um eine Zahl mit einer oder mehreren Ziffern handeln.), detail=(j_idt10:j_idt12:1:Vorgesetzter: Bei 'at.ac.htlperg.model.User@215060fe' muss es sich um eine Zahl zwischen -2147483648 und 2147483647 handeln. Beispiel: 9346)]
"

Ich werd mir jetzt die Daten einfach in eine Session Speichern und beim Bearbeiten einen redirect machen, würde aber trozdem noch gern das Rätsel lösen :D
 

JimPanse

Bekanntes Mitglied
Dein selectOneMenu erwartet ein Integer als Wert. Du gibst aber mit itemValue="#{us}" ein Objekt zurück. Du musst in itemValue="#{us.userId}" die Id des ausgwählten Objekts zurück geben,.

Java:
<h:selectOneMenu value="#{sectionBean.selectedID}"
								styleClass="inputlabel" id="Vorgesetzter"
								rendered="#{s.editable}"
								valueChangeListener="#{sectionBean.changeUser()}">
								<f:selectItem itemValue="${null}" itemLabel="-" />
								<f:selectItems value="#{userBean.userList}" var="us"
									itemLabel="#{us.surename}, #{us.forename}" itemValue="#{us.userId}" />
							</h:selectOneMenu>

Das sollte funktionieren. Mit dem Einsatz von weiteren JSF Bibliotheken würde ich noch warten bis du die Grundlagen verstanden hast sonst machst du dir noch eine zusätzliche Baustelle auf.

Greetz
 

NoXiD

Bekanntes Mitglied
Ah klar, dürfte ich übersehen haben. Danke vielmals, es funktioniert nun einwandfrei und das wichtigste ist, ich habe die Logik dahinter nun auch kapiert :D
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P JSF (Primefaces) SelectOneMenu Value auf Array wird nicht gesetzt Web Tier 0
C selectOneMenu mit valueChangeListener im <p:dialog Web Tier 2
F JSF h:selectOneMenu Wert vorbelegen klappt nicht? Web Tier 2
M Converter für SelectOneMenu Web Tier 3
Phash JSF - SelectOneMenu Property anzeigen Web Tier 3
F JSF p:selectOneMenu Session Web Tier 10
S JSF SelectOneMenu - Probleme mit AJAX Web Tier 6
F PrimeFaces - selectOneMenu Web Tier 2
F PrimeFaces p:selectOneMenu funktioniert nicht Web Tier 12
H JSF Textarea nur einblenden, bei bestimmter Auswahl in SelectOneMenu Web Tier 6
H JSF SelectOneMenu und der Converter Web Tier 3
F JSF ValueChangeListener in editable p:SelectOneMenu Web Tier 3
P SelectOneMenu liest Daten nicht ein Web Tier 7
J JSF 2.0 h:selectOneMenu mit enums Web Tier 4
J h:selectOneMenu und Page-Refresh Web Tier 3
M selectOneMenu Web Tier 4
I selectOneMenu - Problem Web Tier 6
M SelectoneMenu Default Wert Web Tier 4
ModellbahnerTT JSF selectOneMenu Web Tier 15
J Datenübergabe aus selectOneMenu Web Tier 2
F Unterschied h:selectOneMenu zu rich:comboBox Web Tier 4
E Wert aus JSF-Selectonemenu in Textfeld schreiben Web Tier 4
A JSF SelectOneMenu mit Werten aus Bean vorbelegen Web Tier 2
M SelectOneMenu mit Inhalt aus DB Web Tier 2
D Codierung im Frontend funktioniert nicht richtig Web Tier 2
hjpsoft JSP <TEXTAREA>-Tag unterstützt EL-Variablen nicht Web Tier 7
krgewb Base64 funktioniert nicht, aber btoa funktioniert Web Tier 10
6 JSF Form Attribute nicht an Bean übergeben Web Tier 2
C JSP data wird nicht angezeigt Web Tier 6
M webapp controller funktioniert nicht Web Tier 3
Psypsy Spring Thymeleaf Layer werden nicht angezeigt. Web Tier 0
J Https Verknüpfung funktioniert nicht Web Tier 0
K Vaadin Projekt Funkioniert nicht... Web Tier 1
M JSP PrimeFaces LayoutUnits <- breite lässt sich nicht erzwingen wenn 'center' Web Tier 0
R JSF selectOneListbox speichert Value nicht. Web Tier 1
W Tabelle wird nicht aktualisiert Web Tier 8
W JSF DataTable - Filter Funktion funktioniert nicht Web Tier 3
A JSF String wird nicht angezeigt Web Tier 2
S JSF CSS wird gefunden aber inhaltlich nicht angewendet Web Tier 2
FINF_AW_Alex EJB - property nicht vorhanden Web Tier 6
R JSF Bilder aus CSS Datei werden nicht angezeigt. Web Tier 2
F JSF Bean funktioniert nicht immer.. Web Tier 3
C JSF JSF Daten aus Klasse werden nicht angezeigt Web Tier 4
R JSF ManagedProperty wird nicht erstellt Web Tier 1
H JSF jsf/sessionScoped Bean - Bilder (jpg) werden nicht richtig dargestellt Web Tier 1
L error-page mit ui:composite funktioniert nicht Web Tier 0
S Primefaces commandButton in einem Dialog/Form/PanelGrid führt actionListener nicht aus Web Tier 4
A Faces Context nicht mehr erreichbar nach Servlet Aufruf Web Tier 1
D JSF DataTable konvertiert Felder nicht Web Tier 1
G JSF Radio Button ValueChangeListener Wert wird nicht übernommen Web Tier 2
L JSF Composit Component mit ajax funktioniert nicht. Web Tier 4
M fileUploadListener geht nicht wenn Element zur Laufzeit gerendert wird Web Tier 2
Phash Link geht nicht Web Tier 4
S setInterval() will nicht Web Tier 2
A Aufruf eines Servlets auf einer JSP Seite funktioniert nicht Web Tier 10
B JSP Warum nicht ThreadSafe? Web Tier 21
G GWT 404 - Servlet nicht gefunden Web Tier 6
H Servlet lässt sich nicht deployen Web Tier 7
M rendered ruft eine Methode auf, andere aber nicht Web Tier 15
M System-Event in der faces-config.xml klappt nicht Web Tier 15
J JSF BigInteger nicht null sondern 0 Web Tier 3
nrg Java-Code in Taglib wird nicht richtig ausgeführt. Web Tier 7
F JSF CSS Verschachtelung wird nicht abgebildet Web Tier 2
F.S.WhiTeY Servlet Servlet wird nicht angesprochen Web Tier 3
D JSF a4j:support wird nicht gefunden Web Tier 2
D JSF cellpadding oder cellspacing funktioniert nicht Web Tier 4
xehpuk JSF 404 statt 500 bei nicht existenter JSF-Seite Web Tier 7
W JSF Login funktioniert nicht Web Tier 12
K Neue Entitäten werde nicht angezeigt Web Tier 4
H JSP, Eclipse, Tomcat - Java Klasse wird nicht gefunden Web Tier 8
A JSF WebappClassloader.modified() aktualisiert Klassen nicht Web Tier 2
A JSF Rücksicht auf nicht eingeschaltetes JavaScript nehmen Web Tier 2
T JSF wird nicht ausgeführt Web Tier 4
R RadioButton nicht disabled Web Tier 5
J @Named Notation funktioniert nicht Web Tier 3
aze JSF CommandButton:Action wird nicht ausgeführt Web Tier 2
P JSF Netbeans 7.1.1 unterstützt JSF nicht? Web Tier 2
T RichFaces will nicht funktionieren :( Web Tier 2
L Applet kann unter WEB-INF/classes nicht gefunden werden Web Tier 10
H JSF ActionListener wird ausgeführt, aber ändert den Wert nicht. Web Tier 7
R JSF Beans werden nicht ausgeführt Web Tier 4
D richTable sort funktioniert nicht Web Tier 2
L JSF Beispiel wird nicht ausgeführt Web Tier 2
D Fehler: Cookies nicht gesetzt Web Tier 5
A Servlet File Upload funktioniert nur lokal auf Entwicklungsrechner, nicht in Tomcat Web Tier 5
Dit_ JSP Überprüfen ob Benutzer eingeloggt ist oder nicht | SessionSicherheit Web Tier 7
M JSF Button - Methode wird nicht aufgerufen Web Tier 4
L einfache JSF-Seite wird nicht angezeigt Web Tier 8
B JSF HtmlCommandButton --- Action wird nicht aufgerufen Web Tier 2
N JSF [Maven] Seam 2.2, Richfaces 3.3 - a4j wird nicht umgewandelt Web Tier 6
C JSON-Antwort an Javascript geht nicht Web Tier 7
H Servlet Apache Geronimo: Servlet nicht erreichbar Web Tier 2
P JSF AJAX render wird nicht ausgeführt Web Tier 4
E JSF JSF findet Property im ManagedBean nicht Web Tier 5
J JSF Richfaces Tabs, dynamisches include funktioniert nicht Web Tier 4
P Servlet wird nicht gefunden - HTTP Error 503 Web Tier 7
S JSF Primefaces Thema, Css wird geladen, nur die Bilder nicht, bzw Resource wird nicht aufgelöst Web Tier 5
D Fileupload in GWT funktioniert nicht Web Tier 10
B JSF Login authentication schaffe ich nicht Web Tier 2
P Eclipse zeigt Errors an, die auf Tomcat nicht auftreten Web Tier 2

Ähnliche Java Themen

Neue Themen


Oben