Beispiel für JSF 2 Managed Beans

Das Konzept der verwalteten Bean(s) oder Backing-Bean(s) wird von den JSF-Entwicklern intensiv verwendet, um auf die/die Java-Klasse(n) zu verweisen, die für die Handhabung der Präsentationsgeschäftslogik verwendet werden. Das Konzept der verwalteten Bean(s) geht auf ein allgemeineres Konzept zurück, das vor vielen Jahren eingeführt wurde, und ist ein MVC (Model, View & Controller).

In einem JSF-Framework werden die verwalteten Beans gleichzeitig als Modell und Controller betrachtet, da die verwalteten Beans über das, was Sie nennen können (JSF-Ausdruckssprache), mit der Ansicht verknüpft sind und die Navigationsergebnisse bestimmen, die von verwendet werden Der JSF-Navigationshandler zum Angeben der nächsten kommenden Ansicht, auf die der Benutzer zugreifen soll. Jsf geht über die Grenzen eines reinen UI-Frameworks hinaus, es wird als vollständiges Framework betrachtet, daher ist eher eine solche Fusion zu erwarten.

Der Umfang der verwalteten Beans wurde mithilfe des XML-Fragments definiert. In jsf 2 ist diese Zeit vorbei und Sie haben jetzt die neuen Anmerkungen zum Definieren und Spezifizieren der Bereiche. Die Verwendung von Annotationen wie @SessionScoped und @RequestScoped und ähnlichen Annotationen gilt als die beste Möglichkeit, die Manage-Beans in den gewünschten Bereichen zu konfigurieren.

In den vorherigen Versionen von jsf und vor der Veröffentlichung von jsf 2 wurden die verwalteten Beans durch die Bereitstellung des XML-Fragments in der jsf-Konfigurationsdatei (faces-config.xml) definiert, seit jsf 2 jedoch die verwalteten Beans werden auf die alte und auf eine neue Art und Weise durch die Verwendung von Anmerkungen definiert. Dadurch entfällt die Notwendigkeit, mühsame Arbeiten zu erledigen, die Sie sicher gerne ignorieren würden. Anstatt also das XML-Fragment zu verwenden, können Sie die Annotationen @ManagedBean als alternatives Codefragment betrachten, das Sie haben hinzufügen.

Das JSF-Framework hört nicht auf dieser Ebene auf, sondern bietet auch eine unglaubliche Möglichkeit, eine Bean in eine andere Bean zu injizieren, und zwar auf die kürzeste Art und Weise, indem die Annotation @ManagedProperty verwendet wird. Außerdem ist es jetzt an der Zeit, ein neues Konzept zu behandeln, das mit JSF 2 eingeführt wurde und sich auf den Lebenszyklus verwalteter Beans bezieht.

Dieses Tutorial soll ein vollständiges Beispiel für alle Möglichkeiten liefern, die zum Definieren und Konfigurieren der verwalteten Beans im JSF 2.0 verwendet werden.

Lesen Sie auch:

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

1. JSF-Gesichtskonfiguration

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>
<managed-bean>
	<managed-bean-name>jpaTutorialBean</managed-bean-name>
	<managed-bean-class>net.javabeat.jsf.JPATutorialBean</managed-bean-class>
	<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
	<managed-bean-name>jsfTutorialBean</managed-bean-name>
	<managed-bean-class>net.javabeat.jsf.JSFTutorialBean</managed-bean-class>
	<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
</faces-config>
  • JPATutorialBean und JSFTutorialBean sind darin definiert faces-config.xml.

2. JPATutorialBean

JPATutorialBean.java

package net.javabeat.jsf;

public class JPATutorialBean {
	private String message ="This is a JPATutorialBean";

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}
}
  • Es werden keine Anmerkungen verwendet, um JPATutorialBean als verwaltete Bean zu konfigurieren.

3. JSFTutorialBean

JSFTutorialBean.java

package net.javabeat.jsf;

public class JSFTutorialBean {
	private String message = "This is a JSF Tutorial Bean";

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}
}
  • Für die Konfiguration von JSFTutorialBean als verwaltete Bean werden keine Anmerkungen verwendet

4. IndexBean

IndexBean.java

package net.javabeat.jsf;

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

@ManagedBean
@SessionScoped
public class IndexBean {
	private String message = "This is an IndexBean";

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}
}
  • @ManagedBean wird verwendet, um die IndexBean als verwaltete Bean zu konfigurieren
  • @RequestScoped, @SessionScoped und @ApplicationScoped sind die beliebtesten Bereiche zur Bestimmung des Bean-Bereichs.
  • Die IndexBean-Klasse wurde in der nicht erwähnt faces-config.xml

5. 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">
<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 Configuring Managed Bean Example</h2>
		<h:form prependId="false">
			<h:outputText style="color:red" value="Index Bean Message : #{indexBean.message}"></h:outputText>
			<br/>
			<h:outputText style="color:blue" value="JPATutorial Bean Message : #{jpaTutorialBean.message}"></h:outputText>
			<br/>
			<h:outputText style="color:green" value="JSFTutorial Bean Message : #{jsfTutorialBean.message}"></h:outputText>
		</h:form>
	</f:view>
</h:body>
</html>

6. 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>
  • Die darin definierte verwaltete Bean faces-config.xml wird nicht gebunden, wenn Sie den Kontextparameter weggelassen haben javax.faces.application.CONFIG_FILES

7. Konfigurieren der Managed Bean-Demo

Der folgende Schnappschuss zeigt Ihnen, wie verwaltete Beans für die Verwendung konfiguriert werden könnten.
JSF 2: Konfigurieren verwalteter Beans, Beispiel 1

(wpdm_file id=35)

Kommentar verfassen

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

Nach oben scrollen