0

私の問題は、単純な Jsf アプリケーションで h:selectManyCheckbox コンポーネントをレンダリングできないことです。h:selectBooleanCheckbox と h:commandButton は出力に正常に表示されますが、selectManyCheckbox は表示されません。コンポーネントをレンダリングするために、次のコードに欠けているものは何ですか?

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:ui="http://java.sun.com/jsf/facelets">

<h:form>
    <h:selectManyCheckbox value="#{hello.customers}"></h:selectManyCheckbox><br />
    <h:selectBooleanCheckbox value="#{hello.foo}" /><br/>
    <h:commandButton action="response.xhtml" value="Click me" />
</h:form>
</html>

Bean クラス:

@ManagedBean
@SessionScoped
public class Hello implements Serializable{

private static final long serialVersionUID = 1L;
private List<String> customers;
private boolean foo;

public Hello(){
    customers = new ArrayList<String>();
    customers.add("Cust1");
    customers.add("Cust3");
    customers.add("Cust2");
    customers.add("Cust4");
    //foo = true;
}

public List<String> getCustomers() {
    return customers;
}

public boolean isFoo() {
    return foo;
}

}
4

1 に答える 1

2

以下の変更されたコードを確認してください

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">

<h:form>
 <h:selectManyCheckbox value="#{hello.customerSelected}">
    <f:selectItems value="#{hello.customers}" />
</h:selectManyCheckbox><br />
<h:selectBooleanCheckbox value="#{hello.foo}" /><br/>
<h:commandButton action="response.xhtml" value="Click me" />
</h:form>
</html>

Bean クラスに、チェックされた要素の結果を格納するためのフィールドをもう 1 つ追加します。

@ManagedBean
@SessionScoped
public class Hello implements Serializable {

private static final long serialVersionUID = 1L;
public String[] customerSelected;
private List<String> customers;
private boolean foo;

public Hello() {
    customers = new ArrayList<String>();
    customers.add("Cust1");
    customers.add("Cust3");
    customers.add("Cust2");
    customers.add("Cust4");
    // foo = true;
}

public List<String> getCustomers() {
    return customers;
}

public boolean isFoo() {
    return foo;
}

String[] getCustomerSelected() {
    return customerSelected;
}

void setCustomerSelected(String[] customerSelected) {
    this.customerSelected = customerSelected;
}

}
于 2013-03-05T10:26:54.533 に答える