F: Param не работает с H: CommandButton
Вопрос
Я использую Eclipse 3.6.2 (Helios), Tomcat 7, Myfaces 1.2.9
У меня нет проблем, когда я использую F: Param в H: CommandLink, но когда я помещаю F: Param в H: Commandbutton, это не работает. в чем проблема ?
Этот образец работает нормально:
<h:commandLink value="Click here" action="#{myBean.action}">
<f:param name="parameterName1" value="parameterValue1" />
<f:param name="parameterName2" value="parameterValue2" />
</h:commandLink>
Но это не так
<h:commandButton value="Click here" action="#{myBean.action}">
<f:param name="parameterName1" value="parameterValue1" />
<f:param name="parameterName2" value="parameterValue2" />
</h:commandButton>
Решение
В JSF 1.x, <f:param>
поддерживается только в <h:commandLink>
, <h:outputLink>
а также <h:outputFormat>
, не в <h:commandButton>
. Анкет Эта поддержка только в JSF 2.0 и новее.
У вас есть как минимум 4 варианта:
Использовать
<h:commandLink>
вместо. При необходимости используйте CSS, чтобы стилизовать его, чтобы выглядеть как кнопка. Смотрите также пример также Jsf commandbutton url параметры.Использовать
<f:attribute>
или же<f:setPropertyActionListener>
вместо. Смотрите также Коммуникация в JSF.Передать их в качестве аргументов метода
action="#{myBean.action('param1', 'param2')}"
. Анкет Tomcat 7 - это контейнер Servlet 3.0, который поддерживает EL 2.2, который, в свою очередь, поддерживает аргументы прохождения метода. Вам нужно только убедиться, что вашweb.xml
Объявлено Сервлет 3 3.0. Смотрите также Вызывая методы с параметрами EL в JSF 1.2.Обновите до JSF 2.0. Он предлагает столько преимуществ по сравнению с JSF 1.x. Смотрите также Мигрирование с JSF 1,2 в JSF 2.0 а также Коммуникация в JSF 2.0.