Ответ 1
Да. Или:
action="#{bean.method(param)}"
или
<h:commandButton .. >
<f:setPropertyActionListener
target="#{bean.targetProperty}" value="#{param}" />
</h:commandbutton>
(и используйте свойство bean в методе)
Я прочитал о передаче параметров с страницы jsf в managedbean через actionListener. Можно ли передать параметр простому методу действия?
Спасибо за чтение...
Спасибо вам за советы! Я бы потерялся без тебя:-)
После меня работали:
<h:commandLink id="link" action="#{overviewController.showDetails}" >
<f:setPropertyActionListener target="#{overviewController.show_id}" value="#{project.id}" />
<h:outputText value="#{project.title}" />
</h:commandLink>
Итак, кто же заслуживает зеленого тика?: -P могу я дать два из них?
Да. Или:
action="#{bean.method(param)}"
или
<h:commandButton .. >
<f:setPropertyActionListener
target="#{bean.targetProperty}" value="#{param}" />
</h:commandbutton>
(и используйте свойство bean в методе)
Вы говорите о параметрах в этой форме?
<h:commandButton action="#{bean.action(param)}" />
Это зависит от реализации EL. Только JBoss EL и JSP 2.2 EL способны это сделать. Как установить JBoss EL описано в этом ответе.
В качестве альтернативы вы также можете использовать f:param
. f:param
используется только для h:commandLink
, но с JSF 2.0 он также работает на h:commandButton
. Например.
<h:commandButton action="#{bean.action}">
<f:param name="foo" value="bar" />
</h:commandButton>
с @ManagedProperty
, который устанавливает параметр как управляемое свойство bean:
@ManagedProperty("#{param.foo}")
private String foo;
При этом вы, однако, ограничены стандартными типами (String
, Number
, Boolean
). Альтернативой является f:setPropertyActionListener
:
<h:commandButton action="#{bean.action}">
<f:setPropertyActionListener target="#{bean.foo}" value="#{otherBean.complexObject}" />
</h:commandButton>
Тем не менее, есть и другие способы, но все это зависит от единственного функционального требования и областей bean. Вероятно, вам вообще не нужно передавать "параметр".
Новая спецификация. JSF2 позволяет методу действия получить параметр, чтобы вы могли выполнять
<h:commandButton action="#{bean.action(otherBean.complexObject)}">
в ManagedBean метод будет:
public String action(Object complexObject)
* Примечание: убедитесь, что вы включили "el-impl-2.2.jar" *