У меня возникла неприятная проблема, когда я заполняю детализированный выбор из двух selectOneMenu. Первое меню — это Сектор, которое управляет вторым Категорией. Я загружаю выделение для Категории в зависимости от Сектора, и все это работает нормально.
Но когда я редактирую бизнес-объект, к которому прикреплена Категория (есть один) Сектор к этому. Категория не отображается при первой загрузке страницы edit.xhtml. Я знаю, что значение правильное в вспомогательном компоненте SessionScoped. Если я выберу другую категорию сектора, а затем вернусь к исходному сектору, категория будет правильно установлена, и она сохранится в первую очередь.
Классы POJO (сектор -Category) имеет функции hashCode() и Equals(Object object).
У меня есть сгенерированные CRUD конвертеры JSF для объекта POJO, но я не думайте, что это вызывает проблему. Я думаю, что второй selectOneMenu по какой-то причине не отображает свое значение должным образом. Если я переверну родительский элемент (сектор) на что-то другое и обратно в исходное состояние, отобразится правильное значение из управляемого компонента.
Как я могу создать категорию Компонент selectOneMenu отображает значение в управляемом компоненте?
Привет, Крис!
Сообщение об ошибке Faces< /p>
FacesMessage(s) have been enqueued, but may not have been displayed.
sourceId=null[severity=(ERROR 2), summary=(No activity selected), detail=(No activity selected)]
Edit.xhtml
...
...
Компонент-контроллер для категории
@ManagedBean(name = "categoryController")
@SessionScoped
public class CategoryController implements Serializable{
....
@FacesConverter(forClass = Category.class)
public static class CategoryControllerConverter implements Converter {
@Override
public Object getAsObject(FacesContext facesContext, UIComponent component, String value) {
if (value == null || value.length() == 0) {
return null;
}
CategoryController controller = (CategoryController) facesContext.getApplication().getELResolver().
getValue(facesContext.getELContext(), null, "categoryController");
return controller.ejbFacade.find(getKey(value));
}
java.lang.Integer getKey(String value) {
java.lang.Integer key;
key = Integer.valueOf(value);
return key;
}
String getStringKey(java.lang.Integer value) {
StringBuffer sb = new StringBuffer();
sb.append(value);
return sb.toString();
}
@Override
public String getAsString(FacesContext facesContext, UIComponent component, Object object) {
if (object == null) {
return null;
}
if (object instanceof Category) {
Category o = (Category) object;
return getStringKey(o.getIdCategory());
}
else {
throw new IllegalArgumentException("object " + object + " is of type " + object.getClass().getName() + "; expected type: " + CategoryController.class.getName());
}
}
}
Часть объекта POJO
...
public class Category implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "idCategory")
private Integer idCategory;
...
Подробнее здесь: https://stackoverflow.com/questions/771 ... rent-child
Отображение значений в детализированном SelectOneMenus (Parent-Child) ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
JComponent Child не рисует после переопределения функции Parent PaintComponent
Anonymous » » в форуме JAVA - 0 Ответы
- 18 Просмотры
-
Последнее сообщение Anonymous
-
-
-
JComponent Child не рисует после переопределения функции Parent PaintComponent
Anonymous » » в форуме JAVA - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-