Checkbox JSF - 没有返回正确的值

时间:2011-11-30 10:37:01

标签: java jsf checkbox

这是我的问题,

我使用的是jsf,所以我的表单包含3个字段 -h:inputText的 -h:inputSecret -h:selectBooleanCheckbox

bean结构如下:

    public class  UserBean {

       private CustomerData customer;

public CustomerData getCustomer() {
        return customer;
    }

    public CustomerData getCustomer() {
        return customer;
    }
}

CustomerBean


public class CustomerData implements Serializable {

  String email = null;
  String password = null;
  Boolean keepLogged = false;

  public CustomerData() {
  }

  public String getEmail() {
    return email;
  }

  public void setEmail(String email) {
    this.email = email;
  }

  public Boolean getKeepLogged() {
    return keepLogged;
  }

  public void setKeepLogged(Boolean keepLogged) {
    this.keepLogged = keepLogged;
  }

  public String getPassword() {
    return password;
  }

  public void setPassword(String password) {
    this.password = password;
  }
}

因此,当我提交表格时,电子邮件和密码的摘要是正确的,但是如果选中或没有,则保留记录保持为假。 有什么想法吗?

<h:selectBooleanCheckbox styleClass="checkbox" id="remember" value="#{UserBean.customer.keepLogged}" title="#{res.CommonRememberMeTitle}"/>

这里有更多代码

              <h:inputText value="#{UserBean.customer.email}" binding="#{email}" id="email" tabindex="1" maxlength="250">              
              </h:inputText>ck

              <h:inputSecret value="#{UserBean.customer.password}" binding="#{password}" id="password" tabindex="2" maxlength="50" required="true">                      
              </h:inputSecret>
            </span>

1 个答案:

答案 0 :(得分:0)

问题是当您更改复选框的值以使新值(已更改的值)不是Bean变量中的Bind或Set时。可能这是你用过的形式问题。

我有一个解决方案可能是你喜欢或不喜欢。 你可以使用:支持。

这是我的例子

如果你想在h:inputText中使用ajax支持,那么这里是示例

XHTML文件中的

  <h:selectBooleanCheckbox 
        value="#{UserBean.customerData.keepLogged}">
        <a:support event="onclick" limitToList="true" 
        action="#{UserBean.codeValue(UserBean.customerData.keepLogged)}"/>
 </h:selectBooleanCheckbox>
Bean文件中的

Class UserBean   

private CustomerData customerData  = new CustomerData ();

public void codeValue(Boolean value){
        info("HERE IS YOUR VALUE : " + value);
        customerData.setKeepLogged(value); 
}