Newsgroup: it.comp.java
Titolo: Semplice quesito su SelectOneMenu..

Salve ragazzi,
avrei un aiuto da chiedervi.
Sto realizzando per la prima volta in una mia pagina jsf un menu a
tendina di quelli forniti dal tag selectOneMenu,che dovrebbe prelevare
questi valori da una tabella di un database.
L'errore che ho è:
codice:
java.lang.IllegalArgumentException: Value binding '#{user.teams}'of
UISelectItems with component-path {Component-Path : [Class:
javax.faces.component.UIViewRoot,ViewId: /Login.jsp][Class:
javax.faces.component.html.HtmlForm,Id: _id1][Class:
javax.faces.component.html.HtmlPanelGrid,Id: _id2][Class:
javax.faces.component.html.HtmlPanelGrid,Id: _id4][Class:
javax.faces.component.html.HtmlSelectOneMenu,Id: selectTeam][Class:
javax.faces.component.UISelectItems,Id: _id19]} does not reference an
Object of type SelectItem, SelectItem[], Collection or Map but of type
: null
All'interno di un form ho scritto
codice: <h:selectOneMenu id="selectTeam"
 			value="#{authenticationBean.teamName}">
  			<f:selectItems
  			 value="#{user.teams}" />
	</h:selectOneMenu>
dove authenticationBean è un bean per autenticare i dati,mentre
user.teams dovrebbe essere la lista di valori tra cui scegliere.
La ricavo da
codice:package giu;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.faces.model.SelectItem;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class User implements Serializable {
	private static final long serialVersionUID = 1L;
	private String login;
	private String password;
	private String teamname;
	private String role;
	private Connection conn;
	private List<SelectItem> teams;
		public User() {};
	public User(String login, String password, String teamname ) {
		this.login = login;
		this.password = password;
		this.teamname = teamname;
	}
	public void setLogin(String login) {
		this.login = login;
	}
	public String getLogin() {
		return login;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getPassword() {
		return password;
	}
	public void setTeamname(String teamname) {
		this.teamname = teamname;
	}
	public String getTeamname() {
		return teamname;
	}
	public String toString() {
		return firstName + " " + lastName;
	}
	public List<SelectItem> getTeams() {
		return teams;
	}
	public void setTeams(List<SelectItem> teams) {
		this.teams = teams;
	}
	public List<SelectItem> teamList() throws SQLException {
		try{
			DataSource dataSource=Singleton.getInstance().getDataSource();
			Connection conn=dataSource.getConnection();
			Statement stmt = conn.createStatement();
			ResultSet rst = stmt
                .executeQuery("select * from researchteam order by
teamname");
			List<SelectItem> teams = new ArrayList();
			while (rst.next())
				teams.add(new
SelectItem(rst.getString("teamname"),rst.getString("teamname")));
			rst.close();
		    conn.close();
		}
		catch(Exception e){};
		return teams;
	}
}
Mi spiegate gentilmente dove sbaglio?
Non devo passargli una list?

: null
non ti dice nulla?
getTeams ritorna null.
Vedi un po' te per quale motivo. 

scusami ancora se ti disturbo,
ma è questo che non capisco...perchè mi dà errore?
La tabella researchteam esiste e l'unico attributo è teamname,se
faccio la stessa query sul db mi trova 2 valore,com'è che la lista è
vuota?
Ti ho postato tutto il codice per la creazione della lista,potresti
aiutarmi a capire dove sbaglio?
Magari costruisco male la lista.....
spero mi aiuterai...