Значение параметра Ошибка преобразования '52' для 'нулевого конвертера' [дубликат]
На этот вопрос уже есть ответ здесь:
Значение параметра Ошибка преобразования для 'нулевой конвертер - Зачем мне нужен конвертер в JSF? 2 ответаЯ новичок в JSF, и я пытался сохранить данные из формы, которая использует h: selectOneMenu, чтобы получить категорию продукта. H: selectOneMenu заполняется из БД, однако при попытке сохранить продукт в БД я получаю сообщение об ошибке: Значение параметра Ошибка преобразования '52' за 'нулевой конвертер, Я рассмотрел похожие проблемы в StackOverflow и онлайн-учебниках, но я все еще получаю сообщение об ошибке.
Это xhtml:
Это контроллер продукта:
@Named
@RequestScoped
public class ProductController {
@EJB
private ProductEJB productEjb;
@EJB
private CategoryEJB categoryEjb;
private Product product = new Product();
private List productList = new ArrayList();
private Category category;
private List categoryList = new ArrayList();
public String doCreateProduct()
{
product = productEjb.createProduct(product);
productList = productEjb.findAllProducts();
return "listProduct";
}
@PostConstruct
public void init()
{
categoryList = categoryEjb.findAllCategory();
productList = productEjb.findAllProducts();
}
// Getters/Setters and other methods omitted for simplicity
Это упрощенный EJB для простоты:
@Stateless
public class ProductEJB{
@PersistenceContext(unitName = "luavipuPU")
private EntityManager em;
public List findAllProducts()
{
TypedQuery query = em.createNamedQuery("findAllProducts", Product.class);
return query.getResultList();
}
public Product createProduct(Product product)
{
em.persist(product);
return product;
}
}
Это продукт Entity, упрощенный для простоты:
@Entity
@NamedQueries({
@NamedQuery(name="findAllProducts", query = "SELECT p from Product p")
})
public class Product implements Serializable
{
private static final long serialVersionUID = 1L;
@Id @GeneratedValue(strategy= GenerationType.AUTO)
private int product_id;
private String name;
private String description;
protected byte[] imageFile;
private Float price;
@Temporal(TemporalType.TIMESTAMP)
private Date dateAdded;
@ManyToOne
private Category category_fk;
@ManyToOne
private SaleDetails saleDetails_fk;
Это обновленный конвертер, который я использую:
@ManagedBean
@FacesConverter(value="categoryConverter")
public class CategoryConverter implements Converter{
@PersistenceContext
private transient EntityManager em;
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
return em.find(Category.class, new Integer(value));
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
Category category;
category = (Category) value;
return String.valueOf(category.getCategory_id());
}
}
Код был обновлен с проблемы Orignal, теперь код отлично работает.