【发布时间】:2017-02-03 07:57:17
【问题描述】:
当我在页面中使用以下下拉列表时遇到问题。详细地说,当我使用 selectOneMenu 并按下下面列出的按钮时,永远不会调用 save 方法。它只是通过我用 f:event 定义的所有方法。一旦我从我的页面中删除 selectOneMenu 并再次按下保存按钮,我的方法就会被调用而没有任何问题。
<p:selectOneMenu id="unitList"
value="#{myController.userDTO.selectedUnitDTO}">
<f:selectItems value="#{myController.unitList}" var="unitList"
itemValue="#{unitList}" itemLabel="#{unitList.name}" />
</p:selectOneMenu>
下拉列表数据通过以下方法加载(注意,unitList已初始化)
public List<UnitDTO> getUnitList() {
return unitList;
}
我的 bean 有以下注解 @ManagedBean @ViewScoped
这是我的按钮:
<p:commandButton id="save" action="#{myController.save}" value="SAVE" />
更多信息,我注意到当我按下保存按钮时,selectedUnitDTO 的设置器永远不会被调用。
Primefaces 版本:6.0
【问题讨论】:
-
您的
UnitDTO有Converter吗?似乎验证和/或转换失败,所以你的 setter 永远不会被调用。 -
不,我不使用转换器。从 unitList 中检索到的对象类型与我要设置的 selectedUnitDTO 相同。
-
在您的页面中添加
h:messages,您很可能会看到一个错误(很可能也在日志中)。在这种情况下,您需要转换器。 itemValue 在回发到服务器时是一个字符串,而不是一个对象。尝试使用普通的 jsf selectOneMenu,同样的问题!
标签: jsf primefaces