我正在使用JSF 2.2
开发一个Java Web应用程序,并且我有一个列表Boolean
,但此列表不会随客户端决定而改变;当用户单击h:commandButton
时,列表会显示相同的结果:
false
false
true
我的xhtml代码是:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<h:form>
<ui:repeat value="#{test.list}" var="item" varStatus="status">
<h:selectBooleanCheckbox value="#{item}"/>
Hello #{status.index}
<br/>
</ui:repeat>
<h:commandButton value="write" action="#{test.write}">
<f:ajax render="@form" execute="@form"/>
</h:commandButton>
</h:form>
</h:body>
</html>
我的豆是:
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean
@SessionScoped
public class Test implements Serializable {
private List<Boolean> list;
public Test() {
list = new ArrayList();
list.add(false);
list.add(false);
list.add(true);
}
public void write(){
int t = list.size();
for(int i = 0; i < t; i++)
System.out.println(list.get(i));
}
public List<Boolean> getList() {
return list;
}
public void setList(List<Boolean> list) {
this.list = list;
}
}
如果用户选中了例如第一个选项,当用户点击该按钮时,输出必须是:
true
false
true
有什么问题?非常感谢你!