代码之家  ›  专栏  ›  技术社区  ›  juan

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

  •  2
  • juan  · 技术社区  · 14 年前

    来自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>
    

    这是命令搜索\单击:

    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的构造函数中填充列表,那么表就会呈现为OK。

    有什么想法吗?

    3 回复  |  直到 8 年前
        1
  •  2
  •   juan    14 年前

    这是一个范围问题。

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

    如果有人认为这是错误的,请告诉我。现在这是我的答案。

        2
  •  0
  •   Mark Robinson    14 年前

    我不确定支持bean范围是您想要使用的正确范围。我建议使用pageflowscope或session scope。这些将最接近您想要建模的对象。

    页面流作用域遵循用户单击的内容,因此同一Web应用程序/同一用户的两个实例具有不同的页面流作用域。

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

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

    请求范围仅在查看请求之间持续。除了非常短的持续时间数据之外,没有什么用处。

        3
  •  0
  •   lokoko    12 年前

    不应将其设置为sessionscope。在用户会话处于活动状态之前,它将一直有效。您可能希望使用pageflowscope(这对页面的生命周期有效)或requestscope(从客户机发出请求到收到响应这段时间内有效)。