【发布时间】:2011-09-23 03:41:57
【问题描述】:
我对 Converter 类有一个大问题。我正在使用 h:selectOneMenu 为我的 Enetity“产品”选择一个“类别”。当我提交表单时,我收到以下错误:
•“空转换器”的转换错误设置值“”。
我找不到我的实现有什么问题。 我也在寻找如何使用Seam-Faces来做到这一点...... 有任何想法吗? 谢谢。
我正在使用 JSF Mojarra 2.1.2 (FCS 20110613)、GlassFish v 3.1、PrimeFaces 2.x、PrettyFaces 3.x 和 JPA 2.0。
我的 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>
我的转换器类:
@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
【问题讨论】: