0

基于此答案https://stackoverflow.com/a/7531284/944396中提供的第三个选项/示例,我尝试将转换器作为 ViewScoped bean 中的属性;但是,当我这样做时,它会破坏该 bean 的视图范围(它不应该被构造多次)。

我不确定我是否做错了什么,或者该示例是否假设您正在运行已修复 ViewScope/绑定问题的较新版本的 Mojarra。我自己正在运行 Mojarra 2.1.6。这是bean代码:

@ManagedBean
@ViewScoped
public class Bean {

    private Double myVal; 
    private Converter converter;

    public void Bean() {
        converter = new MyCustomConverterClass();
    }

    public Converter getConverter() {
        return converter;
    }

    public Double getMyVal() {
        return myVal;
    }

    public void setMyVal(Double myVal) {
        this.myVal = myVal;
    }

}

以及用法:

<h:outputText value="#{bean.myVal}" converter="#{bean.converter}" />
4

1 回答 1

0

你是对的,它打破了视图范围。该converter属性在视图构建期间进行评估。除了使用您找到的答案中列出的其他选项外,如何为数据表的每一行设置转换器属性?,您需要至少升级到 Mojarra 2.1.18。

于 2013-08-07T13:06:51.033 回答