2011-06-26 41 views
1

轉換器類有一個大問題。我正在使用h:selectOneMenu爲我的Enetity「產品」選擇一個「類別」。當我提交表單時,出現以下錯誤:轉換器已實施,但仍存在錯誤「轉換錯誤設置值」'null轉換器'「

•'null Converter'的轉換錯誤設置值''。

我找不到我的實現出了什麼問題。 另外我正在尋找如何使用Seam-Faces ... 任何想法? Thanx。

我正在使用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 

回答

1

謝謝,但我曾與系統嘗試過。出局。對於給定值(#ID),通過提交和返回的正確類別對象來正確發送值。但仍然有相同的錯誤。

無論如何....我發現了這個問題。轉換器正常工作正常。

唯一導致錯誤的是現場產品「image」。我沒有圖像領域的轉換器。當我從JSF表單中刪除這行時,它沒有錯誤地被提交。

image屬性的類型是一個字節,所以它也需要在JSF中進行轉換,例如其他不是字符串的字段。

只是一個初學者的錯誤,我知道:)

StringToByteConverter: here is an example