为什么单个价值持有人不允许使用多个转换器?

Dav*_*ple 3 jsf converter jsf-2

今天早上我有理由尝试在inputText组件上使用多个转换器,并意识到这不起作用.

有谁为什么JSF只允许每个ValueHolder一个转换器?看起来在一些情况下使用一系列转换器会很优雅.

Bal*_*usC 11

在JSF中,Converter界面的设计具有以下唯一目的:

Converter是一个描述Java类的接口,它可以在模型数据对象和适合于呈现的那些对象的String表示之间执行对象到字符串和字符串到对象的转换.

...

getAsObject将指定的字符串值(与指定的值)相关联UIComponent,转换为适合在请求处理生命周期的" 应用请求值"阶段存储的模型数据对象.

getAsString将与指定关联的指定模型对象值转换UIComponent为适合包含在请求处理生命周期的渲染响应阶段期间生成的响应中的String.

javadoc和JSF规范都没有说明链转换器的可能性.

最好的办法是在实施层面解决这个问题.如果要扩展现有转换器,那么您应该这样做,然后super在适当的时候调用方法.例如

public class SomeExtendedConverter extends SomeBasicConverter {

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {
        Object basicConvertedValue = super.getAsObject(context, component, value);

        // ... manipulate more ...

        return extendedConvertedValue;
    }

    // ...
}
Run Code Online (Sandbox Code Playgroud)