Beispiel für eine JSF 2-Schaltfläche und einen Link

Standardmäßig sendet eine JSF-Anwendung eine Folge von POST-Anfragen an den Server. Jeder POST enthält Formulardaten. Dies ist sinnvoll für Anwendungen, die Benutzereingaben sammeln. Andererseits funktionieren viele Anwendungen nicht auf diese Weise. Einige andere Anwendungen bieten ihren Benutzern einen einfachen Browsing-Mechanismus, bei dem keine Daten vom Benutzer übermittelt und keine Daten erfasst werden. Es ist nicht mehr als das Auswählen von Links und das Navigieren Buch beschriftbar Seiten, sodass der Benutzer bei einem erneuten Besuch der URL auf dieselbe Seite zurückgreifen kann.

Vor JSF 2 wurden alle eingereichten Formulare per POST an den Server gesendet. Seit der Einführung von JSF 2 wurde jedoch ein neues Sendemodell implementiert. JSF 2 bietet zwei Komponenten, die hauptsächlich zum Erreichen von GET-Anfragen verwendet werden. Der Und sind zwei verschiedene Arten von Komponenten, die zum Senden einer GET-Anfrage an den Server verwendet werden. und unterstützen denselben Navigationsmechanismus, der bereits von und verwendet wird. Er eignet sich sicherlich zum Definieren eines Ergebnisses für Ihr und entweder mit feste Zeichenfolge oder durch Verwendung Wertausdruck (Navigationshandler wird später besprochen).

Lesen Sie auch:

  • JSF 2-Tutorials
  • JSF-Tutorials
  • Einführung in JSF

Der wichtigste Unterschied zwischen den Aktionen, die auf der einen Seite in commandButton und commandLink definiert sind, und denen, die auf der anderen Seite in button und link definiert sind. Das Ergebnisattribut, das in den Schaltflächen- und Linkkomponenten definiert ist, wird ausgewertet, bevor die Seite gerendert wird, während die Aktion, die in commandButton und commandLink definiert ist, ausgewertet wird, sobald der Benutzer darauf geklickt hat. Aus diesem Grund verwendet die JSF-Spezifikation die Term-Preemptive-Navigation zur Berechnung der Zielansichts-IDs für GET-Anfragen.

1. ManagedBean

IndexBean.java

package net.javabeat.jsf;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean
@SessionScoped
public class IndexBean {
	private String outcome = "index";

	public String getOutcome() {
		return outcome;
	}

	public void setOutcome(String outcome) {
		this.outcome = outcome;
	}
}

2. Die Aussicht

index.xhtml

<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:head>
	<title>JavaBeat JSF2 Button &amp; Link Components</title>
</h:head>
<h:body>
	<h:form>
		<h1>
			<h:outputText value="JavaBeat JSF 2.2 Examples" />
		</h1>
		<h2>
			<h:outputText value="Button &amp; Link Example" />
		</h2>
		<h:button value="Go To Navigated Page" outcome="navigatedPage"></h:button>
		<br/>
		<br/>
		<br/>
		<h:link value="Go To Navigated Page Through Parametrized Get Request" outcome="navigatedPage?param1=1">
			<f:param name="param2" value="2"></f:param>
		</h:link>
	</h:form>
</h:body>
</html>

navigierteSeite.xhtml

<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:head>
	<title>JavaBeat JSF2 Button &amp; Link Components</title>
</h:head>
<h:body>
	<h:form>
		<h1>
			<h:outputText value="JavaBeat JSF 2.2 Examples" />
		</h1>
		<h2>
			<h:outputText value="Button &amp; Link Example" />
		</h2>
		<h:link value="Go To Index" outcome="#{indexBean.outcome}"></h:link>
	</h:form>
</h:body>
</html>

3. Der Bereitstellungsdeskriptor (web.xml)

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5" metadata-complete="true">
	<context-param>
		<description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
		<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
		<param-value>client</param-value>
	</context-param>
	<context-param>
		<param-name>javax.faces.application.CONFIG_FILES</param-name>
		<param-value>/WEB-INF/faces-config.xml</param-value>
	</context-param>
	<servlet>
		<servlet-name>Faces Servlet</servlet-name>
		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>Faces Servlet</servlet-name>
		<url-pattern>/faces/*</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>Faces Servlet</servlet-name>
		<url-pattern>*.xhtml</url-pattern>
	</servlet-mapping>
	<listener>
		<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
	</listener>
</web-app>

4. JSF 2 Button und Link-Demo

Die folgenden Schnappschüsse zeigen Ihnen das vollständige Szenario der Verwendung eines und zum Initiieren einer GET-Anfrage.

JSF 2 Button & Link Beispiel 1

JSF 2-Schaltfläche und Link – Beispiel 2

JSF 2 Button & Link Beispiel 3

  • Das erste Beispiel zeigt Ihnen die Komponenten und . Die Schaltfläche sendet eine GET-Anfrage zurück an den Server, während der Link eine weitere parametrisierte GET-Anfrage zurück an den Server sendet. Diese Komponenten enthalten feste Ergebnisse zum Erreichen der gewünschten Navigation.
  • Das zweite Beispiel zeigt, wie eine -Komponente eine GET-Anfrage zurück an den Server sendet. Diese Komponente verwendet einen Wertausdruck zum Zuweisen eines Werts für das Ergebnisattribut.
  • Das dritte Beispiel zeigt Ihnen die Parameter, die durch den zweiten Link auf der im ersten Beispiel bezeichneten Seite gesendet werden. Bei param1 und param2 handelt es sich um unterschiedliche Parameter, die auf unterschiedliche Weise gesendet werden.
  • Die gesendeten Anfragen sind lesezeichenfähig.

(wpdm_file id=17)

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen