У меня есть фасоль:ч: selectManyCheckbox преобразователя getAsObject всегда получает "на" в изложении значения
@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"
.
Что там происходит? Почему эта строка идет именно так? И как решить это?
Атрибут 'value' checkboxes пуст. И я не могу понять, почему. Категории имеют данные в каждом свойстве. –