【发布时间】:2017-09-08 11:46:05
【问题描述】:
我有一个 p:autoComplete PF 元素来处理 POJO 建议列表,我为此创建了一个 Converter 类来将 POJO 映射到字符串,反之亦然。
<p:autoComplete value="#{bean.pojoTargetList}" completeMethod="#{bean.getPOJOFilteredList}" var="pojo" itemLabel="#{pojo.name}"
itemValue="#{pojo}" converter="pojoConverter" />
问题是我知道如何从 POJO 映射到字符串 (getAsString()method),但不知道如何从字符串映射到 POJO (getAsObject()method)。
@FacesConverter("pojoConverter")
public class POJOConverter implements Converter {
@Override
public Object getAsObject(FacesContext arg0, UIComponent uiComponent, String value) {
// ?
return pojo;
}
@Override
public String getAsString(FacesContext arg0, UIComponent uiComponent, Object assetTag) {
String _return = null;
...
return _return;
}
也许我错了,但我的理解是getAsObject() 方法的uiComponent 参数是对p:autoComplete PF 元素的引用。如果是这样,我可以访问 POJO 建议列表。因此,我可以对其进行迭代,并找到与value 参数匹配的 POJO 对象。
如果有人能解释我如何从 getAsObject() 方法访问 p:autocomplete 元素的 pojo 建议列表,我将不胜感激。
更新:
也许我错了,但我的理解是getAsObject() 方法的uiComponent 参数是对p:autoComplete PF 元素的引用。如果是这样,我可以访问bean.getPOJOFilteredList。因此,我可以迭代 bean.getPOJOFilteredList 并找到与 value 参数匹配的 POJO 对象。
【问题讨论】:
-
为什么不只使用 Omnifaces 的转换器之一?他们已经考虑了这一切。
标签: primefaces autocomplete converter pojo