我有一个包含两个 AMX 页面的任务流。第一页有一个 selectOneChoice(产品列表),它是从数据控件创建的(具有 allProducts(ProductPOJO 类的 ArrayList))。
我将 allProducts 从我的 dataControl 拖放到 AMX 页面。并得到代码 -
<amx:selectOneChoice value="#{bindings.allProducts.inputValue}" label="Products" id="soc1"
valueChangeListener="#{pageFlowScope.lcBean.onProductChange}">
<amx:selectItems value="#{bindings.allProducts.items}" id="si1"/>
</amx:selectOneChoice>
并在 bean 类中设置一个方法 onProductChange(ValueChangeEvent valueChangeEvent),我从 selectOneChoice 获取选定的行并进行进一步操作。
public void onProductChange(ValueChangeEvent valueChangeEvent) {
AmxAttributeBinding productList =
(AmxAttributeBinding) AdfmfJavaUtilities.evaluateELExpression("#{bindings.allProducts}");
AmxIteratorBinding amxListIterator = productList.getIteratorBinding();
BasicIterator basicIterator = amxListIterator.getIterator();
ProductPOJO currentProduct = (ProductPOJO) basicIterator.getDataProvider();
System.out.println("InSide onProductChange"+currentProduct.getProduct());
ValueExpression ve;
ve = AdfmfJavaUtilities.getValueExpression("#{pageFlowScope.nupMinimumsFlag}", Integer.class);
ve.setValue(AdfmfJavaUtilities.getAdfELContext(), currentProduct.getNupMinimumsFlag());
ve = AdfmfJavaUtilities.getValueExpression("#{pageFlowScope.productFlag}", Integer.class);
ve.setValue(AdfmfJavaUtilities.getAdfELContext(), currentProduct.getProductFlag());
ve = AdfmfJavaUtilities.getValueExpression("#{pageFlowScope.product}", String.class);
ve.setValue(AdfmfJavaUtilities.getAdfELContext(), currentProduct.getProduct());
}
问题是:- 当我们在 selectOneChoice 中选择一些值,然后单击提交转到下一页。然后回到第一页。selectOneChoice 的值正在重置为默认值(集合中的第一个值)。它无法缓存旧的(选定的)值。