【问题标题】:Disable Checkbox with selection on Dropdown在下拉列表中禁用复选框
【发布时间】: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


【解决方案1】:

试试下面的代码:

<r2i4:selectForClass itemClass="VehicleGenericType" value="#{vc.vehicleGenericType}" rendered="#{vc.crudState == null || vc.crudState == 'CREATE'}">
    <f:selectItems value="#{vehicleCategory.vehicleChanged}" />
    <p:ajax event="change" update="departmental" listener="#{vehicleCategory.vehicleDropdownChange} />
</r2i4:selectForClass>

<f:facet name="input">
    <p:selectBooleanCheckbox id="departmental" value="#{vc.isDepartmental}" rendered="#{vc.crudState == null || vc.crudState == 'CREATE'}" 
    disabled="#{vehicleCategory.disable}"/>
</f:facet>


public void vehicleDropdownChange(ValueChangeEvent e) {
        if ( .. ) { disable = true }
}

它应该在这里工作。

【讨论】:

  • 我必须在支持 bean 中创建一个禁用方法吗?因为我在 vehicleDropdownChange 方法中禁用了一条红线。谢谢
  • 它是 bean 中的一个变量,带有 setter 和 getter。私有布尔禁用
  • 我尝试了 mate,但没有工作,因为服务器没有更新任何内容。我唯一的方法是使用某种 javascript 进行尝试,这样它就可以在客户端完成......你怎么看?
  • 我怀疑 vc、vehicleCategory 和 bean 存在一些混淆。对不起,但我不知道。希望别人帮助你:-)
猜你喜欢
  • 1970-01-01
  • 2010-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-28
  • 1970-01-01
  • 1970-01-01
  • 2021-08-01
相关资源
最近更新 更多