Как связать таблицу ADF по нажатию кнопки - PullRequest
2 голосов
/ 03 мая 2010

Исходя из 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;
 }

Комментированная строка также не работает.

Если я заполню список в конструкторе моего Бина, таблица отобразится нормально.

Есть идеи?

Ответы [ 3 ]

2 голосов
/ 03 мая 2010

Это была проблема с областью действия.

После прочтения этого поста , я думаю, что правильный способ сделать это - установить его на viewScope

Если кто-то считает, что это неправильно, пожалуйста, дайте мне знать. Пока это мой ответ.

0 голосов
/ 16 декабря 2012

Вы не должны устанавливать его в sessionScope. Затем он будет действителен до тех пор, пока пользовательский сеанс не станет активным. Возможно, вы захотите использовать либо pageFlowScope (это действительно для жизни страницы), либо requestScope, который действует с момента, когда клиент сделал запрос, до получения ответа.

0 голосов
/ 15 мая 2010

Я не уверен, что объем бэк-бина - тот, который вы хотите использовать. Я бы предложил либо pageFlowScope, либо Session scope. Они наиболее точно соответствуют тому, что вы хотите моделировать.

PageFlowScope соответствует тому, что нажимает пользователь, поэтому два экземпляра одного и того же веб-приложения / одного пользователя имеют разные области PageFlow.

Область сеанса является общей для всех экземпляров веб-приложения одним и тем же пользователем.

Область применения является общей для всех пользователей. Я бы избегал этого почти всегда.

Объем запроса длится только между запросами просмотра. Не очень полезно, за исключением очень коротких данных.

...