从 inputText 更新值
Update value from inputText
我正在使用 ADF BC,我有几个输入文本。
假设我有以下情况:
第 1 步:在三个不同的输入文本中插入 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 的值保持不变。
为什么会发生这种情况,我该如何解决?
不知道是不是还有更多的地方不对。但是如果 i1 有值,你只是将 "i2param" 设置为 null 以外的值,如果 i1 和 i2 有值,则将 "i3param" 设置为 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();
}
尝试重新考虑您的方法:尝试使用 BC 层而不是在支持 bean 中处理业务。所以你可以移动方法
public String aplicarFiltro() {..} 到应用程序模块实现中。
在那里,以编程方式获取对 VO 当前行的引用并读取属性的值。
首先,从 BC Tester 测试您的方案(您的方法)。然后,您可以通过绑定公开该方法,并从支持 bean 中调用它。
另外,我会为您的 VO 公开 RowImpl class,并将一些调试信息放入 setIt1()、setIt2()、setIt3() 属性中,以查看变化如何。
记住,在 BC 层上管理业务总是比托管 bean 简单得多。远离 JSF 生命周期。
我正在使用 ADF BC,我有几个输入文本。 假设我有以下情况:
第 1 步:在三个不同的输入文本中插入 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 的值保持不变。
为什么会发生这种情况,我该如何解决?
不知道是不是还有更多的地方不对。但是如果 i1 有值,你只是将 "i2param" 设置为 null 以外的值,如果 i1 和 i2 有值,则将 "i3param" 设置为 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();
}
尝试重新考虑您的方法:尝试使用 BC 层而不是在支持 bean 中处理业务。所以你可以移动方法
public String aplicarFiltro() {..} 到应用程序模块实现中。 在那里,以编程方式获取对 VO 当前行的引用并读取属性的值。
首先,从 BC Tester 测试您的方案(您的方法)。然后,您可以通过绑定公开该方法,并从支持 bean 中调用它。 另外,我会为您的 VO 公开 RowImpl class,并将一些调试信息放入 setIt1()、setIt2()、setIt3() 属性中,以查看变化如何。
记住,在 BC 层上管理业务总是比托管 bean 简单得多。远离 JSF 生命周期。