JSF SelectManyCheckbox/SelectOneMenu 示例

JSF SelectManyCheckbox/SelectOneMenu example

我想制作一个小 html 页面,您可以在其中 select 在复选框中选择您想在计算中使用的运算符,在复选框下方有一个下拉列表,其中包含以上 selected 运算符作为内容。每次 check/uncheck 操作时,下拉列表的 selectable 内容应该改变。我想用 ValueChangeListener 来实现,但我不知道如何在本练习中实现值更改侦听器。

这是我的 index.html

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://xmlns.jcp.org/jsf/html"
  xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:head>
    <title>Facelet Title</title>
</h:head>
<h:body>
    <h:form>
        <h:selectManyCheckbox onchange = "submit()">
            <f:selectItems value = "#{selectManyCheckboxBean.list}" valueChangeListener = ""/>
        </h:selectManyCheckbox>

        <h:outputText id = "outputText" value = ""/>
        <h:selectOneMenu value = "">
            <f:selectItems value = ""/>
        </h:selectOneMenu>
    </h:form>
</h:body>

这是我的 SelectManyCheckboxBean.java

@ManagedBean
@SessionScoped
public class SelectManyCheckboxBean {
    private List<SelectItem> list;

    public SelectManyCheckboxBean() {
        list = new ArrayList<>();

        list.add(new SelectItem('+'));
        list.add(new SelectItem('-'));
        list.add(new SelectItem('*'));
        list.add(new SelectItem('/'));
    }

    public List<SelectItem> getList() {
        return list;
    }

    public void operatorValueChange (ValueChangeEvent event) {

    }
}

任何人都可以给我一个解决方案或至少一个值更改侦听器的代码片段吗?我的主要问题是我不知道如何告诉值更改侦听器它应该在上面的复选框中选中 selected 运算符后将其添加到列表中。

只需将 selectOneMenu 属性 value 设置为 #{selectManyCheckboxBean.list}。这就是您选中的值所在的位置。