首页 > 解决方案 > JSF不保存我的选择

问题描述

我正在使用 JSF 并希望从下拉列表中保存一个选择,但它没有保存它,我该怎么办?

xhtml:

<h:form>
    <h:selectOneMenu value="#{spielController.ausgewaehlteKategorie}"  >
        <f:selectItems value="#{spielController.alleKategorien}"/>
    </h:selectOneMenu>
</h:form>
<br/>
<h:form>
    <h:commandButton action="#{spielController.ladeFrage()}" value="Spielen"/>
</h:form> 

支持豆:

@Named(value = "spielController")
@SessionScoped
public class SpielController implements Serializable {

    private String ausgewaehlteKategorie;

    private ArrayList<String> alleKategorien = new ArrayList<>();

    public SpielController() throws SQLException {

        for (String kategorie : kdao.getKategorien()) {
            alleKategorien.add(kategorie);
        }
    }


    public String getAusgewaehlteKategorie() {
        return ausgewaehlteKategorie;
    }

    public void setAusgewaehlteKategorie(String ausgewaehlteKategorie) {
        this.ausgewaehlteKategorie = ausgewaehlteKategorie;
    }


    public ArrayList<String> getAlleKategorien() {
        return alleKategorien;
    }

    public void setAlleKategorien(ArrayList<String> alleKategorien) {
        this.alleKategorien = alleKategorien;
    }

}

我从 DAO 类中得到了东西,它可以工作,但是当我按下按钮时,它不起作用,因为我上面所做的选择没有保存

标签: jsfxhtmlselectonemenubacking-beans

解决方案


Move

<h:commandButton action="#{spielController.ladeFrage()}" value="Spielen"/>

to h:form

<h:form>
    <h:selectOneMenu value="#{spielController.ausgewaehlteKategorie}"  >
        <f:selectItems value="#{spielController.alleKategorien}"/>
    </h:selectOneMenu>
    <br/>
    <h:commandButton action="#{spielController.ladeFrage()}" value="Spielen"/>
</h:form> 

This is the reason why your setter not invoked.


推荐阅读