[英]p:selectManyMenu and @FacesConverter(forClass = Clazz.class)
[英]@FacesConverter forClass-Attribute does not work
我想測試一下@FacesConverter
-functionality並加入forClass
-atrribute - 它不起作用 - 這是我的例子:
轉換器類:
@FacesConverter(forClass = Double.class)
public class TextToDoubleConverter implements Converter {
@Override
public Double getAsObject(FacesContext context, UIComponent component, String value) throws ConverterException {
Double doubledValue = null;
try {
doubledValue = new Double(value);
} catch (NumberFormatException e) {
FacesMessage facesMessage = new FacesMessage("Fehler: ...");
facesMessage.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ConverterException(facesMessage);
}
return doubledValue;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
return value.toString();
}
}
ManagedBean:
@Model
public class SomeBean {
private Double someCommvertDouble;
public Double getSomeCommvertDouble() {
return someCommvertDouble;
}
public void setSomeCommvertDouble(Double someCommvertDouble) {
this.someCommvertDouble = someCommvertDouble;
}
}
的index.xhtml:
<h:form>
<h:inputText value="#{someBean.someCommvertDouble}">
<!-- <f:converter converterId="com.java.ee.jsf.TextToIntConverter"/> -->
</h:inputText>
</h:form>
這里有什么不對?
@FacesConverter(forClass)
僅適用於尚未存在內置轉換器的自定義類型。 Double
類型已經有一個內置轉換器DoubleConverter
。 已經在faces-config.xml
定義的任何轉換器(例如內置的)將始終具有比使用@FacesConverter
注釋的轉換器更高的優先級。
只有在webapp的faces-config.xml
明確注冊它而不是注釋時,您的轉換器才有效。
<converter>
<converter-for-class>java.lang.Double</converter-for-class>
<converter-class>com.example.YourDoubleConverter</converter-class>
</converter>
順便說一句,考慮從DoubleConverter
或NumberConverter
擴展並委托給它。 您可以在下面找到一些具體的例子來鏈接密切相關的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.