在getAsObject()&中转换什么值? JSF Converter类的getAsString()方法

时间:2011-07-23 06:57:01

标签: java jsf primefaces

我正在使用带有pojos的PrimeFaces autocomplete,它会显示搜索结果。我的代码如下:

 <p:autoComplete id="searchBar" completeMethod="#{search.fetchSuggestions}" value="#{search.selectedSuggestion}" 
                 var="searchResult" itemLabel="#{searchResult.entityName}" itemValue="#{searchResult.entityId}" converter="searchResultsConverter" >
      <p:column>  
           <p:graphicImage value="/images/#{searchResult.entityDisplayPic}" width="40" height="50"/>  
      </p:column>  

      <p:column>  
           #{searchResult.entityName}  
      </p:column>  
 </p:autoComplete>  

转换器类中的getAsObject()getAsString()方法需要转换哪些值?


我的searchResult课程如下:

public class SearchResult {//object that hold the data of a single search result
    private int entityId;// may be userId/ groupId or etc etc in different cases
    private String entityName;
    private String entityDisplayPic; 
}

2 个答案:

答案 0 :(得分:1)

Converter的目标是从字符串表示转换为具体对象,反之亦然。因此,在这种情况下,您需要一个唯一标识/描述您的SearchResult对象的String。这取决于你这个字符串表示的样子。它可能是类中使用的字段的聚合,它可能是一个唯一的标识符,使您可以从其他(数据库)资源加载具体对象。

答案 1 :(得分:0)

我的webapp中有转换器,它在检索到的数据库实体(我正在使用JPA实体)和字符串之间进行“转换”。一个例子是当我填充表单中的下拉列表框时。在这种情况下,从getAsString()方法返回的字符串只是JPA实体的基于整数的主键(转换为字符串)。然后getAsObject()方法只需要使用主键进行简单的数据库查找来获取对象。

关键是,getAsString()的值只需要包含足够的信息,以允许服务器端代码获取唯一对象。您如何实施getAsObject()完全取决于您。有时它很微不足道,有时它不是。