簡體   English   中英

@FacesConverter forClass-Attribute不起作用

[英]@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>

順便說一句,考慮從DoubleConverterNumberConverter擴展並委托給它。 您可以在下面找到一些具體的例子來鏈接密切相關的問題。

也可以看看:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM