f: param не работает с h: commandButton - PullRequest
2 голосов
/ 01 декабря 2011

Я использую 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>

1 Ответ

8 голосов
/ 01 декабря 2011

В JSF 1.x <f:param> поддерживается только в <h:commandLink>, <h:outputLink> и <h:outputFormat>, но не в <h:commandButton>.Эта поддержка доступна только в JSF 2.0 и новее.

У вас есть как минимум 4 варианта:

  1. Используйте взамен <h:commandLink>.При необходимости используйте CSS для стилизации, чтобы он выглядел как кнопка.См. Также пример JSF commandButton Параметры URL .

  2. Используйте взамен <f:attribute> или <f:setPropertyActionListener>.См. Также Связь в JSF .

  3. Передать их в качестве аргументов метода action="#{myBean.action('param1', 'param2')}".Tomcat 7 - это контейнер сервлета 3.0, который поддерживает EL 2.2, который, в свою очередь, поддерживает передачу аргументов метода.Вам нужно только убедиться, что ваш web.xml объявлен соответствующим сервлету 3.0.См. Также Методы вызова с параметрами по EL в JSF 1.2 .

  4. Обновление до JSF 2.0.Он предлагает так много преимуществ по сравнению с JSF 1.x.См. Также Миграция с JSF 1.2 на JSF 2.0 и Связь в JSF 2.0 .

...