outputText的Converter属性设置为bean属性会破坏ViewScope

时间:2013-08-06 18:07:29

标签: jsf-2

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

我不确定我是否做错了,或者假设您正在运行更新版本的Mojarra并修复了ViewScope /绑定问题。我自己正在运行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}" />

1 个答案:

答案 0 :(得分:0)

你是对的,它打破了视野范围。在视图构建期间评估converter属性。除了使用您找到How to set converter properties for each row of a datatable?的答案中列出的其他选项外,您还需要升级到至少Mojarra 2.1.18。