首先,我展示了我的代码:
XHTML页面:
<h:body>
<h:form id="ffffffffff">
<p:inputText value="#{prueba.dato}" >
<p:ajax event="keyup" process="@this" />
</p:inputText>
</h:form>
</h:body>
豆:
@ManagedBean
@ViewScoped
public class Prueba implements Serializable {
private String dato = "ASSSS";
public String getDato() {
return dato;
}
public void setDato(String dato) {
this.dato = dato;
System.out.println("DAAAAAA: " + dato);
}
public void listener() {
System.out.println("LISTENEEEEEEEEEEEEEEEEEEEEEEEEEE");
}
}
转换器
@FacesConverter
public class SnaCarreraConverter extends SelectItemsConverter {
//CODE
}
我的问题, setDato 始终获得 null 值。但是当我将转换器修改为:
@FacesConverter(forClass = SnaCarrera.class)
添加forClass解决了我的问题,我不知道为什么会这样。 inputText是否在没有添加转换器属性的情况下尝试查找转换器?
答案 0 :(得分:1)
首先,SelectItemsConverter
适用于<f:selectItems>
。 <p:inputText>
不是<f:selectItems>
。因此SelectItemsConverter
对<p:inputText>
毫无用处。另见其文档和展示。
其次,为Converter
实现提供ID或“for-class”以便使用它是正常的。否则,您无法在<x:inputSomething converter>
属性或<f:converter>
标记中引用它,或者您无法将其与某个类自动关联。此要求与SelectItemsConverter
完全无关。这只是标准JSF规范的要求。