h:selectOneMenu вместе с f:selectItems всегда возвращает 0

Вот мой XHTML-код:

<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;
    }
}

Класс лиги имеет атрибут id, но если я вывожу значение selectedLeagueId, оно всегда равно 0.


person Lukas Buchacher    schedule 03.04.2015    source источник
comment
выглядит как значение по умолчанию для selectedLeagueId. Вы должны устранить неполадки в жизненном цикле и сеттерах вашего bean-компонента. Опубликуйте больше своего боба здесь   -  person kolossus    schedule 03.04.2015
comment
Вы меняете вид/переход на другую страницу?   -  person Konstantin Yovkov    schedule 03.04.2015
comment
Согласно itemValue="#{league.id}" и itemLabel="#{league.name}" видно, что List<League> содержит список составных/сложных объектов. В этом случае вам нужно реализовать собственный преобразователь и прикрепить его к <h:selectOneMenu converter="..."/> (<f:converter converterId="..."/> или как-то еще). <f:selectItems> будет выглядеть примерно так <f:selectItems value="#{TeamsHinzufuegenBean.leagues}" var="league" itemValue="#{league}" itemLabel="#{league.name}"/>.   -  person Tiny    schedule 03.04.2015
comment
нет, я не меняю мнение..   -  person Lukas Buchacher    schedule 03.04.2015
comment
@Tiny неверно: вам не нужно реализовывать конвертер. Ваш selectOneMenu привязан к int, а ваш itemValue также установлен к int, поэтому вам не нужно реализовывать преобразователь (ссылка).   -  person DavidS    schedule 04.04.2015
comment
Можете ли вы опубликовать остальную часть своего кода xhtml и свой сценарий?   -  person tt_emrah    schedule 04.04.2015


Ответы (1)


Проверьте, содержит ли getAllLeagues() объекты с идентификатором и правильно ли он установлен

person rexxar    schedule 24.04.2016