我有这行代码,我可以选择皮肤。
<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();
}
任何想法为什么?
答案 0 :(得分:2)
onchange
标记上没有f:selectItems
属性。将您的onchange
属性迁移到h:selectOneMenu
,这应该有效。
h:selectOneMenu
生成为HTML select
标记,f:selectItems
为option
标记。所以onchange
确实应该在select
标记中。
答案 1 :(得分:2)
尝试为 h:selectOneMenu 组件提供 onchange =“submit()”,而不是在f:selectItems组件中给予更改。它应该工作。