我正在研究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);
的输出
哦等等primeface不会检查其他组之前的其他组。因此在执行select命令时请使用group by