从inputText更新值

时间:2015-02-23 10:56:54

标签: oracle-adf

我正在使用ADF BC,我有几个inputTexts。 假设我有以下情况:

步骤1:在三个不同的inputTexts中插入1,2,3(it1,it2和it3,所有三个都使用autoSubmit == true)。

步骤2:点击调用以下方法的按钮:

    public String aplicarFiltro() {
        Object it1param = null, it2param = null, it3param = null, sos1param = null;
        Parametros_IndicadoresLoadAll pila = Parametros_IndicadoresLoadAll.getInstance();
        pila.clear();
            if(it1.getValue() == null || it1.getValue().toString().isEmpty()) {
                it1param = "";
            } else {
                it1param = it1.getValue();
                if(it2.getValue() == null || it2.getValue().toString().isEmpty()) {
                    it2param = "";
                } else {
                    it2param = it2.getValue();
                    if(it3.getValue() == null || it3.getValue().toString().isEmpty()) {
                        it3param = "";
                    } else {
                        it3param = it3.getValue();
                    }
                }

            }

            if(sos1.getValue() != null) {
                sos1param = sos1.getValue();
            }
        pila.init(it1param, it2param, it3param, sos1param);
        if (it1.getValue() == null || it1.getValue().toString().isEmpty()) {
            showPopup(p1, true);
   /*      } else if (sos3.getValue() == null) {
            showPopup(p2, true); */

        }
        return null;
    }

步骤3:我从it2和it3中删除了值,我再次单击该按钮并调用相同的方法。但是,it2和it3的值保持不变。

为什么会发生这种情况,我该如何解决?

2 个答案:

答案 0 :(得分:0)

不知道是否有更多错误。但你只是设置" i2param"如果i1有一个值而且是" i3param"如果i1和i2有值,则返回null,然后返回null。

首先从以下开始。改变这个:

        if(it1.getValue() == null || it1.getValue().toString().isEmpty()) {
            it1param = "";
        } else {
            it1param = it1.getValue();
            if(it2.getValue() == null || it2.getValue().toString().isEmpty()) {
                it2param = "";
            } else {
                it2param = it2.getValue();
                if(it3.getValue() == null || it3.getValue().toString().isEmpty()) {
                    it3param = "";
                } else {
                    it3param = it3.getValue();
                }
            }

        }

为:

if(it1.getValue() == null || it1.getValue().toString().isEmpty()) {
    it1param = "";
} else {
    it1param = it1.getValue();
}

if(it2.getValue() == null || it2.getValue().toString().isEmpty()) {
    it2param = "";
} else {
    it2param = it2.getValue();
}

if(it3.getValue() == null || it3.getValue().toString().isEmpty()) {
    it3param = "";
} else {
    it3param = it3.getValue();
}

答案 1 :(得分:0)

尝试重新思考您的方法:尝试使用BC层,而不是在支持bean中开展业务。所以你可以移动方法

public String aplicarFiltro(){..}进入Application Module Impl。 在那里,以编程方式获取对您的VO当前行的引用并读取属性的值。

首先,从BC Tester测试您的场景(您的方法)。然后,您可以通过绑定公开方法,并从支持bean中调用它。 另外,我会为您的VO公开RowImpl类,并将一些调试信息放入setIt1(),setIt2(),setIt3()属性,以查看更改的方式。

请记住,在BC层管理业务总是比托管bean简单得多。远离JSF生命周期。