1

我想设置 selectManyCheckbox 的复选框以检查条件是否为真“#{myBean.isCondition}”:

MyBean.java

public class MyBean{
  private boolean isCondition;
  ...

  public boolean isCondition{
      return isCondition;
  }
  ...
}

my_page.jspx :

<h:selectManyCheckbox 
    layout="pageDirection"
    label="#{messages['numsTelephone.label']}"
    value="#{listSelected}">
    <s:selectItems var="clientTelephone" 
                value="#{list}"
                label="#{clientTelephone}" />
</h:selectManyCheckbox>

我需要知道它是否存在类似

checked = "#{myBean.isCondition}"

我可以在我的 selectManyCheckbox 块中添加吗?或者我应该使用 javascript 吗?

也欢迎任何其他解决方案。

我的另一个问题是如果选中复选框,如何将 myBean.isCondition 设置为 true ?

谢谢,

4

1 回答 1

2

在“全选”复选框中使用<f:ajax>并在侦听器方法中执行选择作业,然后重新渲染复选框。

开球示例:

<h:form>
    <h:selectBooleanCheckbox value="#{bean.selectAll}">
        <f:ajax listener="#{bean.onSelectAll}" render="items" />
    </h:selectBooleanCheckbox>
    <h:selectManyCheckbox id="items" value="#{bean.selectedItems}">
        <f:selectItems value="#{bean.availableItems}" />
    </h:selectManyCheckbox>
</h:form>

@Named
@ViewScoped
public class Bean implements Serializable {

    private boolean selectAll; // +getter +setter
    private List<String> selectedItems; // +getter +setter
    private Map<String, String> availableItems; // +getter (no setter necessary)

    @PostConstruct
    public void init() {
        availableItems = new LinkedHashMap<String, String>();
        availableItems.put("Foo label", "foo");
        availableItems.put("Bar label", "bar");
        availableItems.put("Baz label", "baz");
    }

    public void onSelectAll() {
        selectedItems = selectAll ? new ArrayList<>(availableItems.values()) : null;
    }

    // ...
}
于 2016-01-15T11:15:51.270 回答