Некоторая помощь будет оценена по этой проблеме.SelectOneMenu всегда показывает первый элемент, а не выбранный - Primefaces
У меня есть несколько страниц JSF, но один из них является категорией, где есть SelectOneMenu для выбора Категории, но когда я пытаюсь изменить подкатегорию, это SelectOneMenu всегда показывает первое значение и не получает предварительный выбор.
Как я могу решить эту проблему. Я много читал SO сообщения и eventhougn Я реализовал пару советов, которых я не достиг. например, @BalusC «s один:
primefaces selectOneMenu doesn't working when it should
Вот мнение о
<h:outputText value="Subcategory ID : #{subcategoryController.subcategory.subcategoryId}"/>
<p:selectOneMenu id="cboCategoryDialog" converter="subcategoryConverter"
value="#{subcategoryController.category.categoryId}"
style="width: 100%"
<f:selectItems value="#{subcategoryController.categoryList}"
var="subcat"
itemLabel="#{subcat.categoryName}"
itemValue="#{subcat.categoryId}"/>
</p:selectOneMenu>**
Это категория Entity:
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "subcategory_id")
private Integer subcategoryId;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 45)
@Column(name = "subcategory_name")
private String subcategoryName;
@JoinColumn(name = "category_id", referencedColumnName = "category_id")
@OneToOne(optional = false;
private Category categoryId;
//Getters and Setters Methods
@Override
public int hashCode() {
return (subcategoryId != null)
? (this.getClass().hashCode() + subcategoryId.hashCode())
: super.hashCode();
}
@Override
public boolean equals(Object obj) {
return (obj instanceof Subcategory) && (subcategoryId != null)
? subcategoryId.equals(((Subcategory) obj).subcategoryId)
: (obj == this);
}
S ubcategoryConverter
@RequestScoped
@FacesConverter("subcategoryConverter")
public class SubcategoryConverter implements Converter {
@EJB
private SubcategoryFacadeLocal EJBsubcategory;
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (!(value instanceof Subcategory) || ((Subcategory) value).getSubcategoryId() == null) {
return null;
}
return String.valueOf(((Subcategory) value).getSubcategoryId());
}
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
if (value == null || !value.matches("\\d+")) {
return null;
}
Subcategory subcategory = EJBsubcategory.find(Integer.valueOf(value));
if (subcategory == null) {
throw new ConverterException(new FacesMessage("Unknown operation ID: " + value));
}
return subcategory;
}
}
Ниже изображение показывает диалог, когда я пытаюсь изменить любой элемент, он всегда показывает компьютер, потому что его первый ITM.
See the image showing the issue
Я читал некоторые связанные полезные вопросы по этому поводу, но я не смог это исправить.
Спасибо заранее,
где ваш конвертер? Что такое подкатегорияController.category.categoryId? – Kenshin
Я использую Onmifaces SelectItemsConverter. subcategoryController.category.categoryId - это место, где выбранная категория сохраняется в сущности подкатегории. @Arun – JVz
PLS сообщение конвертер код – Kenshin