gpt4 book ai didi

jsf - @FacesConverter forClass-Attribute 不起作用

转载 作者:行者123 更新时间:2023-12-01 19:17:07 25 4
gpt4 key购买 nike

我只想测试 @FacesConverter 功能并卡在 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();
}

}

托管Bean:

@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) 仅适用于还没有 built-in converter 的自定义类型。存在。 Double 类型已经有一个内置转换器, DoubleConverterfaces-config.xml 中已定义的任何转换器(例如内置转换器)始终比使用 @FacesConverter 注释的转换器具有更高的优先级。

只有在 web 应用的 faces-config.xml 中显式注册转换器(而不是进行注释)时,转换器才会工作。

<converter>
<converter-for-class>java.lang.Double</converter-for-class>
<converter-class>com.example.YourDoubleConverter</converter-class>
</converter>

顺便说一句,请考虑从 DoubleConverterNumberConverter 扩展并委托(delegate)给它。您可以在下面的链接中找到一些与密切相关的问题的具体示例。

另请参阅:

关于jsf - @FacesConverter forClass-Attribute 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39439917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com