【发布时间】:2013-12-27 06:59:02
【问题描述】:
我有一个下拉菜单,其中默认为“选择一个”,其他值和标签是从后端 bean 收集和填充的。代码如下。
<h:selectOneMenu id="PID" value="#{Controller.PageBean.selectedId}" requiredMessage="Product is required" required="true" onchange="onChangeProduct();">
<f:selectItem itemLabel="choose one" itemValue="" />
<f:selectItems value="#{Controller.PageBean.productList}" var="pro" itemLabel="#{pro.name}" itemValue="#{pro.id}" />
<f:ajax event="change" listener="#{Controller.updateSelectedProduct(Controller.PageBean.selectedId)}" render="productno productName"/>
<f:validator validatorId="productValidator"/>
</h:selectOneMenu>
当我们更改“选择一个”以外的下拉列表时,ajax 函数会被调用,并且后端 bean 值会根据选择的下拉列表进行更改,当我选择“选择一个”时,所有值都应该被取消,但我无法访问控制器点或者ajax函数没有被调用请帮忙。
【问题讨论】:
-
您是否尝试在“itemValue”中为“选择一个”添加一些值?如果你想得到空值来选择一个,下面是代码:
-
我试过了,还是不行。
-
如果
Controller.PageBean中的属性selectedId是int,那么#{null}不会这样做,而是使用一个值,这意味着没有选择像0或-1这样的值并将其设置为itemValue而不是空值。