在我的应用我有三个下拉菜单( p:selectOneMenu
),说A,B,C。其中两个是相关的,说B和C.通过改变BI正在动态加载值下的值来说也有一个文本框。 文本框的值由AJAX当平变化事件被从这三个下拉菜单烧成生成。
这里是XHTML:
<p:selectOneMenu id="customerMenu" value="#{adminController.activityDTO.customerId}" required="true" label="Customer Name" style="width: 200px">
<f:selectItem itemLabel="Select One" itemValue="" />
<f:selectItems value="#{adminController.customers}" var="customer" itemLabel="#{customer.customerName}" itemValue="#{customer.customerId}" />
<p:ajax listener="#{adminController.generateActivityName}" update="activityId" />
</p:selectOneMenu>
<p:selectOneMenu id="activityTypeMenu" value="#{adminController.activityDTO.activityParentType}" required="true" label="Activity Type"
style="width: 200px">
<f:selectItem itemLabel="Select One" itemValue="" />
<f:selectItems value="#{adminController.activityTypes}" var="activityType" itemLabel="#{activityType.parent}" itemValue="#{activityType.parent}" />
<p:ajax listener="#{adminController.updateDependentActivity}" update="activitySubType" />
</p:selectOneMenu>
<p:selectOneMenu id="activitySubTypeMenu" value="#{adminController.activityDTO.activitySubType}" required="true" label="Activity Sub Type"
style="width: 200px">
<f:selectItem itemLabel="Select One" itemValue="" />
<f:selectItems value="#{adminController.activitySubTypes}" var="activityType" itemLabel="#{activityType.name}" itemValue="#{activityType.id}" />
<p:ajax listener="#{adminController.generateActivityId}" update="activityId" />
</p:selectOneMenu>
<p:inputText id="activityId" autocomplete="off" readonly="true" value="#{adminController.activityDTO.activityId}"
label="#{adbBundle['admin.addActivityPanel.addActivityTable.activityId']}" required="true" />
该activityTypeMenu
和activitySubTypeMenu
依赖,由所选择的价值activityTypeMenu
我填充activitySubTypeMenu
。
现在,我面临的问题是:
- 说我有选择“外部”和“内部”在
activityTypeMenu
和默认“选择之一”。 如果让我选择从“外部”activityTypeMenu
的activitySubTypeMenu
将有“项目”和“服务”。 不过,如果我选择默认的“选择之一”的activitySubTypeMenu
仍持有先前动态填充值。 这是因为required="true"
属性抵抗火后端方法从我加载的动态值。 - 我试图设置
itemValue
的<f:selectItem itemLabel="Select One" itemValue="" />
到#{null}
然后后端方法烧制上选择“选择一个”选项,我可以设置空名单activitySubTypes
和这样的activitySubTypeMenu
得到空。 但是,在这种情况下,required="true"
越来越没有意义。 我的意思是,我也有保存按钮,在单击该按钮没有选择任何选项(即选择“选择一个”)从activityTypeMenu
和activitySubTypeMenu
不扔ValidatorException
和部件没有得到由错误的CSS类Primefaces的风格。 - 另外,如果我不设置
itemValue
的<f:selectItem itemLabel="Select One" itemValue="" />
到#{null}
然后改变到选定的值默认选项(“选择一个”)不清除出activityId
p:inputText
。 如果我使用#{null}
然后我可以从中我可以在文本框的值设置为空后端方法烧制。
我CA如何解决这个问题,并得到想要的结果。 我想主要有:
- 如果选项设置为“选择一个”,那么相关的菜单将是空的,文本框的。
- 我想用
required="true"
属性。