JSF SelectOneMenu对OnValueChanged没有反应

时间:2013-02-21 10:22:35

标签: jsf selectonemenu valuechangelistener

我有这行代码,我可以选择皮肤。

<h:form>
    <h:selectOneMenu id="dropdownSkin"
        value="#{helloBean.currentSkin.name}" defaultLabel="Select a skin.."
        valueChangeListener="#{helloBean.skinValueChanged}">
        <f:selectItems value="#{helloBean.mySkinsSI}" var="c"
            itemValue="#{c.value}" immediate="true" onchange="this.form.submit()" />
    </h:selectOneMenu>
    <br />

    <h:inputText id="name" value="#{helloBean.currentSkin.name}"></h:inputText>
    <br />
    <h:inputText id="tcolor" value="#{helloBean.currentSkin.tcolor}"></h:inputText>
    <br />
    <h:inputText id="bcolor" value="#{helloBean.currentSkin.bcolor}"></h:inputText>
</h:form>

但我调试了它,它永远不会进入我的方法:

public void skinValueChanged(ValueChangeEvent e) {
    currentSkin = (Skin) e.getNewValue();
}

任何想法为什么?

2 个答案:

答案 0 :(得分:2)

onchange标记上没有f:selectItems属性。将您的onchange属性迁移到h:selectOneMenu,这应该有效。

h:selectOneMenu生成为HTML select标记,f:selectItemsoption标记。所以onchange确实应该在select标记中。

答案 1 :(得分:2)

尝试为 h:selectOneMenu 组件提供 onchange =“submit()”,而不是在f:selectItems组件中给予更改。它应该工作。