2

来自 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 的构造函数中填充列表,则该表呈现正常。

有任何想法吗?

4

3 回答 3

2

这是一个范围问题。

阅读这篇文章后,我认为正确的做法是将其设置为 viewScope

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

于 2010-05-03T16:07:47.883 回答
0

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

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

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

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

请求范围仅在视图请求之间持续。除了极短的持续时间数据之外,它并不是真正有用。

于 2010-05-15T05:49:53.050 回答
0

您不应将其设置为 sessionScope。然后它将一直有效,直到用户会话处于活动状态。您可能想要使用 pageFlowScope(这在页面的整个生命周期内都有效)或 requestScope,它从客户端发出请求到收到响应时都有效。

于 2012-12-16T12:06:02.363 回答