【发布时间】:2012-10-19 16:49:42
【问题描述】:
我的 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>
(当然我有一个提交表单的按钮)。我的 bean 看起来像这样:
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 列表在请求之间没有变化,这似乎是这个标签的一个常见问题。
有什么想法吗?
【问题讨论】:
标签: jsf jakarta-ee selectmanycheckbox