我的 selectManyCheckbox 标签有问题..
我们在 JBoss Portal 中使用 JSF 1.1(我认为它的版本是 4.2,但不确定)..
我有以下 JSF 标记:
<h:selectManyCheckbox layout="lineDirection"
value="#{personBean.selectedPersonsLongArray}"
id="selectedPersons">
<f:selectItems value="#{personBean.persons}" />
</h:selectManyCheckbox>
(当然我有一个提交表单的按钮)。我的豆子看起来像这样:
public class PersonBean {
private List<SelectItem> persons;
private List<SelectItem> selectedPersons = new ArrayList<SelectItem>(); // +getter +setter
private List<String> selectedPersonsStringList = new ArrayList<String>();// +getter +setter
private List<Long> selectedPersonsStringList = new ArrayList<Long>();// +getter +setter
private long[] selectedPersonsLongArray = new long[0];// +getter +setter
private String[] selectedPersonsStringArray = new String[0]; // +getter +setter
public void getPersons(){
if(persons == null){
List<Person> personsFromDb = // get from DB
persons = new ArrayList<Person>(personsFromDb.size());
for(Person person : personsFromDb){
// ID of a person is a long
persons.add(new SelectItem(person.getId(), person.getName()));
}
}
return persons;
}
public void setPersons(List<SelectItem> persons){
this.persons = persons;
}
...
}
bean 是会话范围的,并且 Person 的 Id 属性是类型long
。我尝试将标签的值绑定到 bean 中列出的所有类型。提交时,几乎都会selectedPersonLongArray
给出“验证错误”消息。如果我将它绑定到selectedPersonLongArray
我得到一个错误,说selectedPersons
必须填写。
正如我所说,bean 是会话范围的,我已经仔细检查过persons
请求之间的列表没有变化,这似乎是这个标签的一个常见问题。
有任何想法吗?