JSF SelectOneMenu对OnValueChanged没有反应

JSF SelectOneMenu对OnValueChanged没有反应,jsf,selectonemenu,valuechangelistener,Jsf,Selectonemenu,Valuechangelistener,我有这行代码,我可以选择一个皮肤 <h:form> <h:selectOneMenu id="dropdownSkin" value="#{helloBean.currentSkin.name}" defaultLabel="Select a skin.." valueChangeListener="#{helloBean.skinValueChanged}"> <f:selectItems value="#{

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

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

知道为什么吗?

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


h:selectOneMenu
生成为HTML
select
tag,而
f:selectItems
选项
标记。所以
onchange
确实应该在
select
标签中。

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


h:selectOneMenu
生成为HTML
select
tag,而
f:selectItems
选项
标记。因此,
onchange
确实应该在
select
标记中。

不要在f:selectItems组件中给出更改,尝试为h:selectOneMenu组件给出onchange=“submit()”,然后重试。它应该可以工作。

不要在f:selectItems组件中进行更改,而是尝试为h:selectOneMenu组件提供onchange=“submit()”,然后重试。它应该会起作用

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