【发布时间】:2016-07-14 11:46:07
【问题描述】:
我正在开发一个 Java EE 项目并使用 Primefaces。我尝试按组显示搜索操作结果。为了显示结果,我使用primefaces autocomplete facet。我达到了一些后果,但问题是相同的组正在重复,如下所示。('0002','000' 组重复)
<p:autoComplete id="generalSearch" completeMethod="#{search.afterSearch}" minQueryLength="3"
var="doc" itemLabel="#{doc.get('NAME')}" itemValue="#{doc}" forceSelection="true" groupBy="#{doc.get('CODE')}"
converter="searchConverter" scrollHeight="500"
effect="blind" styleClass="SearchText" placeholder="Search"/>
这是我的 SearchConverter 类
@FacesConverter("searchConverter")
public class SearchConvert implements Converter {
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
if(value != null && value.length() > 0) {
try {
SearchBean sBean = (SearchBean) context.getExternalContext().getSessionMap().get("search");
System.out.println("VALUE " + value);
return sBean.getDocs().get(Integer.parseInt(value));
} catch(NumberFormatException e) {
Log.debug("ERROR");
throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conversion Error", "Not a valid theme."));
}
}
else {
return null;
}
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if(value != null) {
return (String) ((SolrDocument) value).get("id");
}
return null;
}
}
我不确定getAsObject 函数是否正常工作。因为看不到System.out.println("VALUE " + value);的输出
【问题讨论】:
-
您确定您通过方法 'completeMethod="#{search.afterSearch}" 返回的列表没有 000 002 值检查吗?
-
我的列表有值 000 和 0002 但为什么列表中有两个不同的组? @ankushyadav
-
Ohh wait primeface 不会检查其他组。 @ankushyadav
标签: jsf-2 primefaces autocomplete