我对Converter类有一个很大的问题。我正在使用 h:selectOneMenu 为我的Enetity“产品”选择“类别”。当我提交表格时,我得到以下错误:
•'null Converter'的转换错误设置值''。
我找不到我的实施有什么问题。 我也正在寻找如何使用Seam-Faces ... 有任何想法吗? 感谢名单。
我使用的是JSF Mojarra 2.1.2(FCS 20110613),GlassFish v 3.1,PrimeFaces 2.x,PrettyFaces 3.x和JPA 2.0。
MY JSF页面:
<h:selectOneMenu id="selectCategory"
value="#{productController.category}">
<f:selectItems value="#{categoryController.listCategory()}" var="category" itemLabel="#{category.name}" itemValue="#{category}"/>
<f:converter converterId="categoryConverter" />
</h:selectOneMenu>
MY Converter课程:
@FacesConverter(forClass=Category.class, value="categoryConverter")
public class CategoryConverter implements Converter {
private CategoryController ctrl;
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
ctrl = (CategoryController) context.getApplication().getELResolver().getValue(
context.getELContext(), null, "categoryController");
Category category = ctrl.findById(Integer.valueOf(value));
return category;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
return "" + ((Category) value).getCategoryid();
}
}
我的ProductController类的一部分:
@ManagedBean(name = "productController")
@RequestScoped
ProductController class
public ProductController{
private Category category;
//getters :: setters
答案 0 :(得分:1)
谢谢,但我已经尝试过system.outs了。通过提交和返回给定值(#ID)的正确类别对象正确发送值。但仍然有同样的错误。
无论如何....我发现了问题。转换器正常工作正常。
唯一导致错误的是现场产品。“image”。我没有图像场转换器。当我从JSF表单中删除此行时,它被提交没有错误。
图像属性的类型是一个字节,因此它也需要在JSF中转换,例如非String的其他字段。
我知道的初学者错误:)
StringToByteConverter: here is an example