Jsf h:SelectOne菜单和f:selectItems始终返回0
以下是我的XHTML代码:Jsf h:SelectOne菜单和f:selectItems始终返回0,jsf,selectonemenu,Jsf,Selectonemenu,以下是我的XHTML代码: <h:selectOneMenu id="combo" value="#{TeamsHinzufuegenBean.selectedLeagueId}"> <f:selectItems value="#{TeamsHinzufuegenBean.leagues}" var="league" itemValue="#{league.id}" itemLabel="#{l
<h:selectOneMenu id="combo" value="#{TeamsHinzufuegenBean.selectedLeagueId}">
<f:selectItems value="#{TeamsHinzufuegenBean.leagues}"
var="league" itemValue="#{league.id}"
itemLabel="#{league.name}"/>
</h:selectOneMenu>
还有我的豆子:
@ManagedBean(name = "TeamsHinzufuegenBean")
@ViewScoped
public class TeamsHinzufügenBean implements Serializable{
private static final long serialVersionUID = 1L;
private List<League> leagues;
private ArrayList<Team> teams = new ArrayList<Team>();
private String teamname;
private int selectedLeagueId=1;
@PostConstruct
public void init() {
leagues = Database.getInstance().getAllLeagues();
for(League l : leagues)
System.out.println(l);
}
public List<League> getLeagues() {
return leagues;
}
public void setLeagues(List<League> leagues) {
this.leagues = leagues;
}
public int getSelectedLeagueId() {
return selectedLeagueId;
}
public void setSelectedLeagueId(int selectedLeagueId) {
this.selectedLeagueId = selectedLeagueId;
}
public ArrayList<Team> getTeams() {
return teams;
}
public void setTeams(ArrayList<Team> teams) {
this.teams = teams;
}
public String getTeamname() {
return teamname;
}
public void setTeamname(String teamname) {
this.teamname = teamname;
}
}
league类有一个属性id,但是如果我输出selectedLeagueId的值,它总是0。检查getAllLeagues是否包含具有id的对象,并且是否正确设置了该id看起来像selectedLeagueId的默认值。您应该对bean的生命周期和setter进行故障排除。是否更改视图/导航到另一个页面?根据itemValue={league.id}和itemLabel={league.name},很明显列表包含复合/复杂对象的列表。在这种情况下,您需要实现一个自定义转换器并将其附加到或其他任何组件。然后会像这样。不,我不改变视图。@Tiny不正确:您不需要实现转换器。selectOneMenu绑定到int,itemValue也设置为int,因此不需要实现转换器。