0

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

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

任何想法为什么?

4

2 回答 2

2

标签上没有onchange属性。将您的属性f:selectItems迁移到,这应该可以工作。onchangeh:selectOneMenu

h:selectOneMenu生成为 HTMLselect标签,并且f:selectItemsoption标签。所以onchange真的应该在select标签中。

于 2013-02-21T10:44:11.900 回答
2

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

于 2013-02-21T11:01:29.500 回答