JSF 2-Navigation mit From-Action-Beispiel

Sie haben die Navigation mit Dynamic Navigation – Action Outcome bereits gesehen, aber wie Sie bemerkt haben, ist die Verwendung von Navigationskoffer Element innerhalb einer faces-config.xml Von-Ergebnis wird gestellt. Das navigation-case-Element ist komplexer als wir zuvor besprochen haben. Zusätzlich zum Von-Ergebnis Element, es gibt auch ein From-Action-Element. Diese Flexibilität kann nützlich sein, wenn Sie zwei separate Aktionen mit derselben Ergebniszeichenfolge haben.

In diesem Tutorial werden die Vorteile der Verwendung der Navigation mit dem From-Action-Element in der JSF-Konfigurationsdatei hervorgehoben. Wenn Sie Fragen haben, schreiben Sie diese bitte in den Kommentarbereich.

Lesen Sie auch:

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

1. Verwaltete Bohne

IndexBean.java

package net.javabeat.jsf;

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

@ManagedBean
@SessionScoped
public class IndexBean {
	private String username;
	private String password;
	private String email;

	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}

	public String login(){
		// Do some processing
		if(this.username.equals("javabeat") && this.password.equals("javabeat")){
			return "success";
		}
		return "failure";
	}

	public String notifyEmail(){
		return "success";
	}
}

2. Die Ansichten

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">
<h:head>
	<h:outputScript library="javax.faces" name="jsf.js"/>
</h:head>
<h:body>
	<f:view>
		<h1>JavaBeat JSF 2.2 Examples</h1>
		<h2>JSF2 Dynamic Navigation - From Action Example</h2>
		<h:form prependId="false">
			<h:panelGrid columns="2">
				<h:outputText value="Enter Username: "/>
				<h:inputText value="#{indexBean.username}"/>
				<h:outputText value="Enter Password: "/>
				<h:inputText value="#{indexBean.password}"/>
			</h:panelGrid>
			<h:commandButton value="Notify Me" action="#{indexBean.notifyEmail}"></h:commandButton>
			<h:commandButton value="Login" action="#{indexBean.login}"></h:commandButton>
		</h:form>
	</f:view>
</h:body>
</html>

willkommen.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">
<h:head>
	<h:outputScript library="javax.faces" name="jsf.js"/>
</h:head>
<h:body>
	<f:view>
		<h1>JavaBeat JSF 2.2 Examples</h1>
		<h2>JSF2 Dynamic Navigation - From Action Example</h2>
		<h:form prependId="false">
			<h:outputText value="Welcome Mr. #{indexBean.username}"/>
		</h:form>
	</f:view>
</h:body>
</html>

relogin.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">
<h:head>
	<h:outputScript library="javax.faces" name="jsf.js"/>
</h:head>
<h:body>
	<f:view>
		<h1>JavaBeat JSF 2.2 Examples</h1>
		<h2>JSF2 Dynamic Navigation - From Action Example</h2>
		<h:form prependId="false">
			<h:outputText value="Your Username or Password is wrong, please relogin"/>
			<h:commandButton value="Relogin" action="/index.xhtml"></h:commandButton>
		</h:form>
	</f:view>
</h:body>
</html>

notify.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">
<h:head>
	<h:outputScript library="javax.faces" name="jsf.js"/>
</h:head>
<h:body>
	<f:view>
		<h1>JavaBeat JSF 2.2 Examples</h1>
		<h2>JSF2 Dynamic Navigation - From Action Example</h2>
		<h:form prependId="false">
			<h:outputText value="Enter Your Email: "></h:outputText>
			<h:inputText value="#{indexBean.email}"></h:inputText>
			<h:commandButton value="Any Action" action="/index.xhtml"></h:commandButton>
		</h:form>
	</f:view>
</h:body>
</html>

3. JSF Faces-Konfigurationsdatei

faces-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
	version="2.2">
<application>
	<resource-bundle>
		<base-name>net.javabeat.jsf.application</base-name>
		<var>msg</var>
	</resource-bundle>
</application>
<navigation-rule>
	<from-view-id>/index.xhtml</from-view-id>
	<navigation-case>
		<from-action>#{indexBean.login}</from-action>
		<from-outcome>success</from-outcome>
		<to-view-id>/welcome.xhtml</to-view-id>
	</navigation-case>
	<navigation-case>
		<from-action>#{indexBean.notifyEmail}</from-action>
		<from-outcome>success</from-outcome>
		<to-view-id>/notify.xhtml</to-view-id>
	</navigation-case>
	<navigation-case>
		<from-outcome>failure</from-outcome>
		<to-view-id>/relogin.xhtml</to-view-id>
	</navigation-case>
</navigation-rule>
</faces-config>
  • Beachten Sie die Verwendung desselben Ergebnisses innerhalb von zwei unterschiedlichen Aktionen

4. Der Bereitstellungsdeskriptor (web.xml)

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>

5. Dynamische JSF 2-Navigation – Aus der Action-Demo

Die folgenden Schnappschüsse zeigen Ihnen die Verwendung derselben Von-Ergebnis um verschiedene Arten der Navigation zu erreichen. Die Anmelde- und Benachrichtigungsaktionen werden zurückgegeben Erfolg Ergebnis, aber sie führen zu zwei unterschiedlichen Ansichten. Das Erfolgsergebnis der Anmeldeaktion muss uns zu „welcome.xhtml“ führen, aber im Falle einer Benachrichtigungsaktion muss die Anwendung uns zu „notify.xhtml“ führen, um den Benutzer per E-Mail zu benachrichtigen.

Dynamische JSF 2-Navigation aus Aktionsbeispiel 1

Dynamische JSF 2-Navigation aus Aktionsbeispiel 2

Dynamische JSF 2-Navigation aus Aktionsbeispiel 3

(wpdm_file id=39)

Kommentar verfassen

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

Nach oben scrollen