我正在开发一个 Java Web 应用程序,JSF 2.2
并且我有一个列表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>
我的 Bean 是:
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
问题是什么?非常感谢!