Могу ли я "передать" объект с тегом параметра JSF? - PullRequest
15 голосов
/ 18 января 2010

Я ищу тег f: param с моим собственным объектом в атрибуте value.Затем, в методе базового компонента для действия, я хотел бы иметь возможность извлечь этот объект из запроса.(Извините, если моя терминология не так хороша, я новичок в JSF).

Теперь я могу передавать строки в параметрах запроса просто отлично.Я также понимаю, что параметр всегда будет строкой в ​​http get или post, поэтому я не действительно передаю Java-объект.Я также понимаю, что способ сделать это - передать какой-то «идентификатор», который бэк-компонент мог бы затем использовать для идентификации рассматриваемого объекта.

Однако меня интересует, позволит ли JSF сделать это прозрачно.Могу ли я указать какой-либо объект в качестве значения параметра, а затем просто извлечь его из RequestMap в методе действия?

1 Ответ

20 голосов
/ 18 января 2010

Вы не можете сделать это с <f:param>. Он должен быть добавлен к URL-адресу запроса, поэтому он действительно должен быть String. Просто используйте <f:setPropertyActionListener> вместо.

1008 * Е.Г. *

<h:commandLink value="Submit" action="#{bean.submit}">
    <f:setPropertyActionListener target="#{bean.otherBean}" value="#{otherBean}" />
</h:commandLink>

Таким образом, #{otherBean} просто доступен как this.otherBean внутри submit() метода. Таким образом, вам также не нужно связываться с картой параметров запроса (для которой в случае <f:param> я бы вместо этого использовал внедрение управляемого свойства вместо #{param.name}).

Альтернативы используют <h:inputHidden> в сочетании с Converter или использование томагавка <t:saveState>. Также см. эту статью блога для получения дополнительной информации и примеров.

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