JSF实体转换错误:丰富suggestionbox转换错误设定值“*”为“空转换器”

问题描述:

我使用丰富: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+"%"); 
    } 

} 

让收到一个字符串值的输入,而不是一个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

这是我想出了在最后:Seam: Creating a custom converter