如何在按钮单击时绑定ADF表

时间:2010-05-03 14:51:49

标签: binding oracle-adf jdeveloper

来自ASP.NET我很难掌握基本的ADF概念。

我需要在单击按钮时绑定一个表,由于某种原因我不明白(我倾向于页面生命周期,我猜这与ASP.NET不同)它不起作用。

这是我的ADF代码:

<af:commandButton text="#{viewcontrollerBundle.CMD_SEARCH}"
    id="cmdSearch"
    action="#{backingBeanScope.indexBean.cmdSearch_click}"
    partialSubmit="true"/>

<af:table var="row" rowBandingInterval="0" id="t1"
                    value="#{backingBeanScope.indexBean.transactionList}"
                    partialTriggers="::cmdSearch"
                    binding="#{backingBeanScope.indexBean.table}">
            <af:column sortable="false" headerText="idTransaction" id="c2">
              <af:outputText value="#{row.idTransaction}" id="ot4"/>
            </af:column>
            <af:column sortable="false" headerText="referenceCode" id="c5">
              <af:outputText value="#{row.referenceCode}" id="ot7"/>
            </af:column>
          </af:table>

这是cmdSearch_click:

public String cmdSearch_click() {
    List l = new ArrayList();
    Transaction t = new Transaction();
    t.setIdTransaction(BigDecimal.valueOf(1));
    t.setReferenceCode("AAA");
    l.add(t);

    t = new Transaction();
    t.setIdTransaction(BigDecimal.valueOf(2));
    t.setReferenceCode("BBB");
    l.add(t);

    setTransactionList(l);

    // AdfFacesContext.getCurrentInstance().addPartialTarget(table);

    return null;
 }

注释行也不起作用。

如果我在Bean的构造函数中填充列表,那么表格就可以了。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

这是一个范围问题。

阅读this post后,我认为正确的方法是将其设置为viewScope

如果有人认为这是不正确的,请告诉我。现在这是我的答案。

答案 1 :(得分:0)

我不确定支持bean范围是否是您想要使用的范围。我建议使用pageFlowScope或Session范围。这些将最贴切地映射到您想要建模的内容。

PageFlowScope遵循用户点击的内容,因此同一个Web应用程序/同一用户的两个实例具有不同的PageFlow范围。

会话范围对于同一用户的所有Web应用实例都是通用的。

应用程序范围对所有用户都是通用的。我几乎总是会避免这种情况。

请求范围仅在视图请求之间持续。除了极短的持续时间数据外,它并没有什么用处。

答案 2 :(得分:0)

您不应将其设置为sessionScope。然后它将在用户会话激活之前有效。您可能希望使用pageFlowScope(这在页面的生命周期内有效)或requestScope,该请求从客户端发出请求到收到响应之间有效。