Frage

Ich verwende Eclipse 3.6.2 (Helios), Tomcat 7, MyFaces 1.2.9

Ich habe kein Problem, wenn ich f: param in das h: commandLink verwende, aber wenn ich f: param in h: commandbutton eingehe, funktioniert es nicht. was ist das Problem ?

Diese Stichprobe funktioniert gut:

<h:commandLink value="Click here" action="#{myBean.action}">
<f:param name="parameterName1" value="parameterValue1" />
<f:param name="parameterName2" value="parameterValue2" />
</h:commandLink>

Aber es tut es nicht

<h:commandButton value="Click here" action="#{myBean.action}">
<f:param name="parameterName1" value="parameterValue1" />
<f:param name="parameterName2" value="parameterValue2" />
</h:commandButton>
War es hilfreich?

Lösung

In JSF 1.x die <f:param> wird nur in unterstützt <h:commandLink>, <h:outputLink> und <h:outputFormat>, nicht in <h:commandButton>. Diese Unterstützung ist nur in JSF 2.0 und neuer.

Sie haben mindestens 4 Optionen:

  1. Verwenden <h:commandLink> stattdessen. Verwenden Sie bei Bedarf CSS, um es zu stylen, um wie eine Taste auszusehen. Siehe auch ein Beispiel für ein Beispiel JSF CommandButton URL -Parameter.

  2. Verwenden <f:attribute> oder <f:setPropertyActionListener> stattdessen. Siehe auch Kommunikation in JSF.

  3. Geben Sie sie als Methodenargumente weiter action="#{myBean.action('param1', 'param2')}". Tomcat 7 ist ein Servlet 3.0 -Container, der EL 2.2 unterstützt, das wiederum die Argumente für die Verabschiedung von Methoden unterstützt. Sie müssen nur sicherstellen, dass Ihre web.xml wird deklariert, dass Servlet 3.0. Siehe auch Aufrufen von Methoden mit Parametern von EL in JSF 1.2.

  4. Upgrade auf JSF 2.0. Es bietet so viele Vorteile gegenüber JSF 1.x. Siehe auch Migration von JSF 1.2 nach JSF 2.0 und Kommunikation in JSF 2.0.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top