【问题标题】:JSF can't get property of a value returned by a method with parametersJSF 无法获取带有参数的方法返回的值的属性
【发布时间】:2015-12-04 21:49:08
【问题描述】:

我遇到了一个问题,该问题涉及允许 Double 类型的输入字段为 null 或其他值。

由于我使用的是自动生成的代码,因此我无法触及对象的 get/set 方法。另外,我无法修改服务器参数,例如-Dorg.apache.el.parser.COERCE_TO_ZERO。

我最近的解决方案是为自动生成的对象创建一个包装对象,它处理String 而不是Double。这里是:

public class WrapperType {

    private AUTO_GENERATED_OBJECT autogen;

    public WrapperType(AUTO_GENERATED_OBJECT autogen) {
        this.autogen = autogen;
    }

    public String getOperation() {
        if (autogen.getOperation() == null) {
            return null;
        }
        return autogen.getOperation() + "";
    }

    public void setOperation(String value) {
        if (value == null || value.isEmpty()) {
            autogen.setOperation(null);
        } else {
            autogen.setOperation(Double.valueOf(value));
        }
    }
}

所以我要做的就是,不要在我的自动生成的对象上调用 get/set,而是在等效包装器上调用 get/set,这可以通过以下方式获得:

public WrapperType convertVar(AUTO_GENERATED_OBJECT autogen) {
    return new WrapperType(autogen);
}

然后在需要的地方引用它:

<p:inputText value="#{bean.convertVar(_var).operation}" />

除非这不起作用。我收到一个错误:

javax.el.PropertyNotFoundException: /operation/collections/tabs/page.xhtml  The class 'MyClass$Proxy$_$$_WeldClientProxy' does not have the property 'convertVar'.

有人对如何解决此问题或克服我对空值和数值的要求有任何想法吗?

【问题讨论】:

    标签: java jsf primefaces


    【解决方案1】:

    看看这个。只需使用 @WebListener 修改属性并获取空值而不是零。

    coerce to zero

    【讨论】:

    • 像魅力一样工作。当我看到 COERCE_TO_ZERO 解决方案时,我不应该这么轻易放弃。谢谢,胡里奥。
    猜你喜欢
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    相关资源
    最近更新 更多