我正在使用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的值保持不变。
为什么会发生这种情况,我该如何解决?
答案 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生命周期。