逻辑:在TABLE_ONE
中显示下拉(来自page1.amx
的数据),并根据从TABLE_TWO
获取数据所需的选择,然后呈现将数据检索到page2.amx
。以下是我试过的样本,
我已在服务包中创建了服务类ServiceClass.java
,并为该类创建了DataControl (ServiceClassDC)
。
从我的FirstPage.amx
我在下拉列表中使用valueChangeListener
调用服务类方法(下拉值将从DB填充,让我们使用TABLE_ONE
ID)。下面是这个逻辑的代码片段
FirstPage.amx
<amx:selectOneChoice value="#{bindings.selectId.inputValue}" label="Select Id" id="soc1"
valueChangeListener="#{ServiceClass.callThisMethod}">
<amx:selectItems value="#{bindings.selectId.items}" id="si1"/>
</amx:selectOneChoice>
根据使用 WHERE 条件的选择,我得到了productList
中包含结果集数据的对象列表。
ServiceClass.java
public void callThisMethod(ValueChangeEvent valueChangeEvent) {
System.out.println("Selected Value: "+valueChangeEvent.getNewValue());
String selectedValue = valueChangeEvent.getNewValue().toString();
ClassMappingDescriptor descriptor = ClassMappingDescriptor.getInstance(TableTwo.class);
DBPersistenceManager pm = getLocalPersistenceManager();
try{
StringBuffer sql = pm.getSqlSelectFromPart(descriptor);
sql.append(" WHERE ID='"+selectedValue+"'");
sql = pm.constructOrderByClause(sql, descriptor);
ResultSet set = pm.executeSqlSelect(sql.toString(), new ArrayList());
System.out.println("Result set >> "+set);
List productList = pm.createEntitiesFromResultSet(set, (List) descriptor.getAttributeMappingsDirect());
System.out.println("productList "+productList);
} catch(Exception exp){
System.out.println("Exception : "+exp);
}
}
现在,我想将List对象数据(productList)
显示在SecondPage.amx
屏幕中。这该怎么做?
如果您想了解更多相关细节,请在下方发表评论。
答案 0 :(得分:1)
您需要在公共方法中公开List productList
(因此提供get方法)并在数据控件中公开该方法。然后,您可以将其拖放到页面上。
示例:
public Product[] getProductArray() {
return (Product[]) productList.toArray();
}
请注意,这是使用Java 1.4的MAF版本的示例!