Oracle MAF:如何将ResultSet列表呈现到AMX页面?

时间:2015-10-03 11:37:37

标签: java oracle-maf

逻辑:在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屏幕中。这该怎么做?

如果您想了解更多相关细节,请在下方发表评论。

1 个答案:

答案 0 :(得分:1)

您需要在公共方法中公开List productList(因此提供get方法)并在数据控件中公开该方法。然后,您可以将其拖放到页面上。

示例:

 public Product[] getProductArray() {  
     return (Product[]) productList.toArray();
 }

请注意,这是使用Java 1.4的MAF版本的示例!