【发布时间】:2015-09-25 14:20:57
【问题描述】:
我有一个包含一些项目的选择菜单。还有一个用于显示“请选择一个”的空项目.. 我的目标是在选择其中一个数据时查询一些数据。如果我选择“请选择一个”做另一件事。
但最终,更改事件会针对正常值触发,但如果我选择“请选择一个”项目,则不会触发它。谢谢你的帮助。这是我的代码。
<p:selectOneMenu style="width: 200px" id="positionForward" value="#{hrProcessController.queryCriteria.positionForward}" converter="listConverter"
effect="fade" var="u" filter="true" filterMatchMode="startsWith" validator="#{hrProcessController.isOpenPositionForwValid}">
<f:selectItem itemLabel="#{menu['onemenu.choose']}" itemValue="#{null}"/>
<f:selectItems value="#{hrProcessController.positionList}" var="position" itemLabel="#{position.name}" itemValue="#{position}" />
<p:ajax event="change" listener="#{hrProcessController.onPositionSelect}" update="openPositionForward"/>
<p:column>
<h:outputText value="#{u==null ? menu['onemenu.choose'] : u.name}" />
</p:column>
</p:selectOneMenu>
public void onPositionSelect()
{
if(queryCriteria.getPositionForward()!=null)
{
OpenPositionQueryCriteria criteria = new OpenPositionQueryCriteria();
criteria.setPosition(queryCriteria.getPositionForward());
List<OpenPosition> openPositions = openPositionService.searchOpenPosition(criteria);
setOpenPositionList(openPositions);
}
else
{
List<OpenPosition> positions = openPositionService.getActiveOpenPositionList();
setOpenPositionList(positions);
}
}
【问题讨论】:
-
尝试用
<f:selectItem itemLabel="#{menu['onemenu.choose']}" noSelectionOption="true" />替换<f:selectItem itemLabel="#{menu['onemenu.choose']}" itemValue="#{null}"/> -
很遗憾它没有用@MathieuCastets
标签: ajax events primefaces selectonemenu