Ответ 1
Вы не можете сделать это с помощью <f:param>
. Он должен быть добавлен к URL-адресу запроса, поэтому он действительно должен быть String
. Просто используйте <f:setPropertyActionListener>
вместо этого.
например.
<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
или с помощью Tomahawk <t:saveState>
. Также см. эту статью в блоге для получения дополнительной информации и примеров.