Beispiel für die JSF 2 Ajax-Fehlerbehandlung

Der Ajax-Mechanismus ist identisch mit den Mechanismen, die als fehleranfällig gelten, wie Sie es bei der Arbeit mit einem JSF-Framework erlebt haben. Ajax-Framework mit dem JSF 2.0-Framework bietet Ihnen onerror Attribut, um die Fehler zu behandeln, die ausgelöst werden könnten, während das JSF-Framework die bei f:ajax erwähnte(n) Komponente(n) ausführt ausführen Attribut

Lesen Sie auch:

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

Der Wert der onerror Attribut ist eine JavaScript-Funktion. JSF ruft diese Funktion auf, wenn während der Verarbeitung der Ajax-Anfrage ein Fehler auftritt. Wie bei f:ajax ein Ereignis Attribut übergibt JSF das onerror Funktion Daten Objekt. Die Werte für dieses Objekt sind dieselben wie die Werte für Daten Objekt, das JSF wie aufgelistet an die Ereignisfunktion übergibt:

  • HTTP Fehler: Antwortstatus null oder undefiniert oder Status < 200 oder Status >=300.
  • leere Antwort: Es kam keine Antwort vom Server.
  • männlich geformt: Die Antwort war kein wohlgeformtes XML.
  • Serverfehler: Die Ajax-Antwort enthält ein Fehlerelement vom Server.

Für Fehler gilt die Daten Das Objekt enthält außerdem drei Eigenschaften, die für Ereignisse nicht vorhanden sind:

  • Beschreibung
  • Fehlername
  • Fehlermeldung

1. 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>
	<script>
		if(!net) var net = {}
		if(!net.javabeat){
			net.javabeat = {
				monitor:
				function (data){
					var loading = document.getElementById("image");
					if(data.status == "begin"){
						loading.style.display = "block";
					}
					else if(data.status == "success"){
						loading.style.display = "none";
					}
				},
				handle:
				function(data){
					console.log("Error Description: "+data.description);
					console.log("Error Name: "+data.errorName);
					console.log("Error errorMessage: "+data.errorMessage);
					console.log("httpError: "+data.httpError);
					console.log("emptyResponse: "+data.emptyResponse);
					console.log("maleformed: "+data.maleformed);
					console.log("serverError: "+data.serverError);
				}
			}
		}
	</script>
	<h:outputScript library="javax.faces" name="jsf.js"/>
</h:head>
<h:body>
	<f:view>
		<h1>JavaBeat JSF 2.2 Examples</h1>
		<h2>JSF2 Using JavaScript Namespace Example</h2>
		<h:form prependId="false">
			<h:inputText id="input" value="#{indexBean.message}"/>
			#{' '}
			<h:commandButton value="Display Text" action="#{indexBean.action}">
				<f:ajax execute="@this input" render="output"
							onevent="net.javabeat.monitor" onerror="net.javabeat.handle"></f:ajax>
			</h:commandButton>
			#{' '}
			<h:outputText id="output" value="#{indexBean.message}"></h:outputText>
			<h:graphicImage id="image" value="#{resource('images:ajax-loader.gif')}" style="display:none;"></h:graphicImage>

		</h:form>
	</f:view>
</h:body>
</html>

2. 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 message;

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}

	public String action() throws Exception{
		Thread.sleep(6000);
		System.out.println(5+10/0); // This is an assumption
		System.out.println(message);
		return "";
	}

}

3. 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>

4. JSF 2-Demo zum Umgang mit Ajax-Fehlern

Der folgende Schnappschuss zeigt Ihnen, wie Sie mit den Fehlern umgehen können, die während der Verarbeitung der Ajax-Anfrage auftreten können.

Beispiel für die JSF 2-Fehlerbehandlung

(wpdm_file id=33)

Kommentar verfassen

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

Nach oben scrollen