【发布时间】:2016-07-12 13:45:57
【问题描述】:
我有一颗豆子:
@ManagedBean(name = "bExam")
@SessionScoped
public class BExam implements Serializable
{
private List<Category> categories;
private List<Category> categoriesSelected;
public BExam() {
categories = CategoryDb.getAll(); // there is ok. Categories has filled right.
categoriesSelected = new ArrayList<>();
getters & setters...
}
有转换器:
@FacesConverter("categoryConverter")
public class CategoryConverter implements Converter<Category> {
@Override
public Category getAsObject(FacesContext fc, UIComponent uic, String string) {
...
}
@Override
public String getAsString(FacesContext fc, UIComponent uic, Category t) {
return String.valueOf(t.getId());
}
}
有selectManyCheckbox:
<h:selectManyCheckbox id="categories" value="#{bExam.categoriesSelected}" converter="categoryConverter">
<f:selectItems
value="#{bExam.categories}"
var="category"
itemLabel="#{category.name}"
itemValue="#{category}"/>
</h:selectManyCheckbox>
这是类别模型:
public class Category implements Serializable
{
private int id;
private String name;
private int sortOrder;
private int categorySetId;
getters & setters...
}
复选框是正确构建的。当我单击其中任何一个时,在getAsObject 中的string 参数中,我总是得到"on"。
那里发生了什么?为什么这个字符串恰好来了?又如何解决?
【问题讨论】:
-
Checkboxes 的
value属性为空..我不明白为什么.. 类别在每个属性中都有数据。
标签: jsf converter selectmanycheckbox