используя командную кнопку в столбце данных для передачи индекса строки в JSF - PullRequest
0 голосов
/ 07 января 2011

Я добавил командную кнопку в столбец с данными, как это.При нажатии кнопки идентификатор записи будет использоваться для обновления некоторых других записей в базе данных.Вот что я попробовал:

<ice:dataTable value="#{myBean.storedRecords}" var="record" rows="10">
   <h:column>
     <h:commandButton id="myButton#{record.id}" value="#{record.id}" 
             actionListener="myBean.buttonActionListener" />
   </h:column>
</ice:dataTable>

В выводе я вижу, что значение является идентификатором записи.Однако в методе прослушивателя buttonAction идентификатор кнопки выглядит как «myButton» без идентификатора записи.

Не могли бы вы указать, как динамически устанавливать идентификатор кнопки.Или вы можете предложить способ передать индекс строки на сервер через нажатие кнопки.

Ваша помощь очень ценится.

Ответы [ 2 ]

2 голосов
/ 07 января 2011

Возврат DataModel в datatable вместо List.

private DataModel storedRecords;

public MyBean() {
    storedRecords = new ListDataModel(recordDAO.listStoredRecords());
}

// ...

Тогда вы можете получить текущую строку с помощью DataModel#getRowData() внутри действия компонентаmethod.

public String buttonAction() {
    StoredRecord storedRecord = (StoredRecord) storedRecords.getRowData();
    // ...
    return "outcome";
}

Обратите внимание, что я неявно намекаю на использование action вместо actionListener на кнопке.

0 голосов
/ 07 января 2011

вот мое решение.

Благодаря отладке и поиску в Google я понял, что я HtmlDataTable является прародителем (!) HtmlCommandButton. и HtmlDataTable расширяет класс UIData. и UIData имеет открытый метод для получения сохраненного значения в текущей строке.

public void btnActionListenerMethod(Action e) {
  if(e.getSource() instanceof HtmlCommandButton) {
    HtmlCommandButton button = (HtmlCommandButton) e.getSource();
    UIData dataTable = (UIData) button.getParent().getParent();
    MyRecord record = (MyRecord) dataTable.getRowData();
    // ......
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...