индекс компонента jsf, который вызвал событие - PullRequest
0 голосов
/ 15 ноября 2011

Это должен быть глупый вопрос, но я не могу найти правильные ключевые слова для Google: у меня есть слушатель действия, который может получить событие от любого из нескольких флажков, которые все были сгенерированы из одной строкиJSP в DataTable.Как я могу узнать от слушателя действия, кто выпустил событие?

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

Какой правильный способ сделать это?

Ответы [ 2 ]

1 голос
/ 15 ноября 2011

После первоначального поиска, я думаю, это может вам помочь.

http://illegalargumentexception.blogspot.com/2009/02/jsf-working-with-component-ids.html

Вы пытались использовать f: param в дополнение к значениям флажков для передачи пользовательских параметров, чтобы это было более понятным, чем работа с ID для манипулирования бизнес-логикой. ID.

0 голосов
/ 15 ноября 2011

Используя атрибут DataTables var, вы сможете сделать это

<h:dataTable ...  var="currentRow">
  ....
  <h:selectBooleanCheckbox ... actionListener="#{blah.doThis}">
      <f:attribute name="curRec" value="#{currentRow}" />
  </h:selectBooleanCheckbox>

боб:

public void doThis(ActionEvent ae)
{
    TreeMap myMap = (TreeMap)ae.getComponent().getAttributes().get("curRec");
    ...
}

Редактировать: Переменная привязки вашего объекта данных должна иметь метод getRowIndex();. Это должно дать вам индекс записи, вызвавшей событие в таблице. Я ссылаюсь на проект ICEfaces, поэтому я прошу прощения, если это не правильно. Дайте мне знать, спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...