2011-08-21 53 views
3

我使用豐富:suggestionboxJSF實體轉換錯誤:豐富suggestionbox轉換錯誤設定值「*」爲「空轉換器」

  • 選擇從意見箱
  • 的建議,然後保存我的形式
  • 它提出了驗證錯誤說rich suggestionbox Conversion Error setting value '568-UNIMED-2005' for 'null Converter'

我需要

  • 什麼是錯我的代碼的幫助嗎?
  • 如何解決這個問題?

這裏是我的LcInfo

@AutoCreate 
@Scope(ScopeType.CONVERSATION) 
@Name("lcInfo") 
@Entity 
@Table(name="lc_info") 
public class LcInfo implements Serializable { 
    private static final long serialVersionUID = 1L; 

    private Integer id; 
    private ItemIndentMast itemIndentMastBean; 

    public LcInfo() { 
    } 


    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    @Column(unique=true, nullable=false) 
    public Integer getId() { 
     return this.id; 
    } 

    public void setId(Integer id) { 
     this.id = id; 
    } 

    //bi-directional many-to-one association to ItemIndentMast 
    @ManyToOne 
    @JoinColumn(name="item_indent_mast", nullable=false) 
    public ItemIndentMast getItemIndentMastBean() { 
     return this.itemIndentMastBean; 
    } 

    public void setItemIndentMastBean(ItemIndentMast itemIndentMastBean) { 
     this.itemIndentMastBean = itemIndentMastBean; 
    } 


    @Override 
    public int hashCode() { 
     final int prime = 31; 
     int result = 1; 
     result = prime * result + id; 
     return result; 
    } 

    @Override 
    public boolean equals(Object object) { 
     if (this == object) return true; 
     if (object == null) return false; 
     if (getClass() != object.getClass()) return false; 
     LcInfo other = (LcInfo) object; 
     return id.equals(other.id); 
    } 


} 

這裏是我的XHTML源與豐富:suggestionbox

  <h:inputText value="#{lcInfo.itemIndentMastBean}" id="itemIndentMastBean" required="true"/> 
      <rich:suggestionbox for="itemIndentMastBean" 
       suggestionAction="#{lcInfoController.suggestion}" 
       var="result" 
       fetchValue="#{result}" 
       minChars="3" 
       nothingLabel="No capitals found" > 
       <f:facet name="header"> 
        <h:outputText value="Select Indent Number" style="font-size: 10px; padding-left: 5px"/> 
       </f:facet> 
       <h:column> 
        <h:outputText value="#{result}" /> 
       </h:column> 
      </rich:suggestionbox>     

這裏是控制器代碼是如何建議從控制器加載

@Name("lcInfoController") 
@Scope(ScopeType.CONVERSATION) 
@AutoCreate 
public class LcInfoController { 


    public List<ItemIndentMast> suggestion(Object query) { 
     String queryText = query.toString(); 
     if(StringUtils.isBlank(queryText) || queryText.length() < 3) { 
      return Collections.emptyList(); 
     } 

     return itemIndentMastService.filterIndent(queryText+"%"); 
    } 

} 

回答

1

讓收到一個字符串值的輸入,而不是一個bean: 變化

value="#{lcInfo.itemIndentMastBean}", 

value="#{lcInfo.someString}", 

JSF不知道如何處理您的ItemIndentMast BEAN。 alternatevly您可以創建一個轉換器,該bean(字符串轉換爲豆) http://www.javabeat.net/tips/70-create-simple-custom-converter-implementation.html

+0

「JSF不知道如何顯示ItemIndentMast豆」是什麼你的意思是?如果你請解釋更多,會很高興。 – Kowser

+0

JSF獲取字符串中的並試圖將其轉換爲一個itemIndentMastBean對象,但這樣它失敗itemIndentMastBean不是字符串。一個的必須連接到字符串,如果你想TOT其附加到一個對象,你必須從輸入字符串轉換爲對象 –

+0

自定義轉換器聽起來像一個不錯的選擇。當我有機會時,我會嘗試,並讓你知道。 – Kowser