根据本回答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}" />
答案 0 :(得分:0)
你是对的,它打破了视野范围。在视图构建期间评估converter
属性。除了使用您找到How to set converter properties for each row of a datatable?的答案中列出的其他选项外,您还需要升级到至少Mojarra 2.1.18。