Лучший способ передать значение в бэк в Richfaces - PullRequest
0 голосов
/ 18 апреля 2011

У меня есть таблица, и я использую actionListener для выполнения действия удаления, см. Следующее изображение. сейчас я использую event.getComponets (), чтобы получить значение, установленное из тега f: param. однако, таким образом, я должен жестко кодировать идентификатор компонента в компоненте поддержки. выглядит не очень хороший подход. это лучший способ передачи значения из пользовательского интерфейса, когда в таблице есть список кнопок действий.

    final UIParameter parm = (UIParameter) event.getComponent().findComponent(EDIT_SITE_ID_PARM);
    return (Integer)parm.getValue();

enter image description here

enter image description here

Ответы [ 3 ]

1 голос
/ 18 апреля 2011

Вы можете использовать a4j: actionParam name = ".." value = "..", он работает так же, как f: param, но также автоматически выполняет присваивание свойству bean.Другой вариант - использовать f: setPropertyActionListener.

0 голосов
/ 19 апреля 2011

Кристиан помог найти способ, используя actionparam.я поставил код в следующем

<a4j:commandButton value="delete" >
<a4j:support event="onclick" reRender="reviewArea">
    <a4j:actionparam name="setViewMode" assignTo="#{backingBean.selectTmpId}" value="#{item.id}" actionListener="#{backingBean.viewMsgContent}" />
</a4j:support>

0 голосов
/ 18 апреля 2011

Ваш слушатель действия должен выглядеть следующим образом:

public void deleteActionListener(ActionEvent event) {
        final String param = (String) FacesContext
                .getCurrentInstance().getExternalContext()
                .getRequestParameterMap().get("deleteIdParam");
                //convert to int and call your delete method
}

, поэтому вы жестко кодируете только имя параметра, а не идентификатор компонента.

Конечно, теперь ваш actionListener будет deleteActionListener вместоваш старый.

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