【发布时间】:2014-06-24 02:44:17
【问题描述】:
我在 xhtml 文件的数据表中有一个下拉菜单和一个复选框。下拉菜单有 L、C、UV 和其他各种选择。 When L is selected for example, I want the checkbox to be disabled.
这里是下拉框和复选框的相关xhtml代码:
<r2i4:selectForClass itemClass="VehicleGenericType" value="#{vc.vehicleGenericType}" rendered="#{vc.crudState == null || vc.crudState == 'CREATE'}"
valueChangedListener="#{vehicleCategory.vehicleDropdownChange">
<f:selectItems value="#{vehicleCategory.vehicleChanged}" />
<p:ajax />
</r2i4:selectForClass>
<f:facet name="input">
<p:selectBooleanCheckbox id="departmental" value="#{vc.isDepartmental}" rendered="#{vc.crudState == null || vc.crudState == 'CREATE'}"
disabled="#{vehicleCategory.vehicleChanged eq 'L'}"/>
</f:facet>
在 bean 中,我有以下代码:
public void vehicleDropdownChange(ValueChangeEvent e) {
if(e.getNewValue().equals("L")) {
}
}
有谁知道我如何实现这一目标?
谢谢
【问题讨论】:
-
也许完成你的 ajax 定义很有用:
-
@BlueOcean 我在某处读到,如果我使用 valueChangedListener,我不应该使用 ajax,反之亦然。如果我使用 ajax,bean 代码会是什么样子?谢谢。
-
支持 bean 没有改变。是的,如果您在值更改后立即使用 valueChangeListener,它将传递给您的支持 bean。但有一点。您在 UI 中有另一个组件取决于您的更改。所以我认为你应该使用 p:ajax 并强制它使用“更新”选项检查每次更改的复选框启用。你试过吗?结果如何?
-
@BlueOcean 我添加了您评论的 ajax 定义,但是在下拉菜单(或其他任何内容)上选择 L 时,它不会禁用部门复选框。我已经离开了支持豆和其他一切,也和你说的一样。这些控件都在一个dataTable里面,会不会影响到它?
-
我能说的最后一件事是使用一些布尔值。在您的 vehicleDropdownChange 方法中实现支持 bean,并确保它按照您的预期进行更改。然后在您的 xhtml 中使用一些更简单的代码,例如 disabled="#{vehicleCategory.YourBooleanValue}"。希望对你有帮助
标签: javascript ajax jsf checkbox drop-down-menu