JSF 2 CommandLink-Beispiel

Die h:commandLink-Komponente ist eine wichtige Komponente unter den von JSF bereitgestellten Komponenten. Diese Komponente rendert ein HTML-Anker-Tag . JSF 2 erweitert h:commandLink, indem es ihm ermöglicht, eine zugehörige Aktion aufzurufen, indem Parameter dafür übergeben werden. Das Hauptattribut von h:commandLink ist ein Aktion Attribut, das a akzeptiert Methodenbindung Ausdruck für eine Backing-Bean-Aktion (Methode), die aufgerufen werden soll, wenn der Benutzer auf geklickt hat. Der Methodenbindungsausdruck hat die folgenden Rollen, um als richtige Aktion akzeptiert zu werden.

h:commandButton und h:commandLink sind die Hauptkomponenten für die Navigation innerhalb einer JSF-Anwendung. Wenn auf eine Schaltfläche oder einen Link geklickt (aktiviert) wird, sendet eine POST-Anfrage die Formulardaten zurück an den Server und der Lebenszyklus des JSF-Frameworks wird gestartet. Der Hauptunterschied zwischen h:commandButton und h:commandLink besteht darin, dass letzterer einen vordefinierten Code am JavaScript-Attribut onclick bereitstellt.

Lesen Sie auch:

1. Verwaltete Bohne

LoginBean.java

package net.javabeat.jsf;

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

@ManagedBean
@SessionScoped
public class LoginBean {
	private String username = "";
	private String password = "";
	private String authority = "";

	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 getAuthority() {
		return authority;
	}
	public void setAuthority(String authority) {
		this.authority = authority;
	}
	public String login(String type){
		this.authority = type;
		if(this.username.isEmpty() == false && this.username.equalsIgnoreCase("Josha")
				&& this.password.isEmpty() == false && this.password.equals("Josha1@#$")){
			return "success";
		}
		return "failure";
	}
}

2. Die Ansichten

login.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>
	function confirmFunction(){
		if(!confirm("Are you sure you want to login?"))
			return false;
		return true;
	}
	</script>
</h:head>
<h:form>
	<h1>
		<h:outputText value="JavaBeat JSF 2.2 Examples" />
	</h1>
	<h2>
		<h:outputText value="CommandLink Example" />
	</h2>
	<table>
		<tr><td>Enter Your Username : </td><td><h:inputText id="username" value="#{loginBean.username}"/></td></tr>
		<tr><td>Enter Your Password : </td><td><h:inputSecret value="#{loginBean.password}"/></td></tr>
		<tr><td colspan="2"><h:commandLink onclick="return confirmFunction();" value="Login" action="#{loginBean.login('Admin')}"/></td></tr>
	</table>
	<br/>
</h:form>
</html>

success.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:form>
	<h1>
		<h:outputText value="JavaBeat JSF 2.2 Examples" />
	</h1>
	<h2>
		<h:outputText value="CommandLink Example" />
	</h2>
	Welcome <h:outputText value="#{loginBean.username}"/>
	<br/>
	You're Logged in By <h:outputText value="#{loginBean.authority}"/> Authority
	<br/>
</h:form>
</html>

fail.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:form>
	<h1>
		<h:outputText value="JavaBeat JSF 2.2 Examples" />
	</h1>
	<h2>
		<h:outputText value="CommandLink Example" />
	</h2>
		Login Failure, Please Try Again !
	<br/>
</h:form>
</html>

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. CommandLink vs. CommandButton HTML-Ansicht

CommandButton-HTML-Ansicht

<input type="submit" name="j_idt4:j_idt24" value="Login" onclick="return confirmFunction();">

CommandLink HTML-Ansicht

'
<a href="#" onclick="jsf.util.chain(this,event,'return confirmFunction();','mojarra.jsfcljs(document.getElementById(\'j_idt4\'),{\'j_idt4:j_idt24\':\'j_idt4:j_idt24\'},\'\')');return false">Login</a>

5. JSF 2 CommandLink-Demo

Die folgenden Schnappschüsse veranschaulichen das vollständige Szenario der Verwendung der h:commandLink-Komponente und die Auswirkungen einer unsachgemäßen Verwendung von Onclick-JavaScript.
JSF 2 CommandLink-Beispiel 1

JSF 2 CommandLink-Beispiel 2

JSF 2 CommandLink-Beispiel 3

JSF 2 CommandLink-Beispiel 4

(wpdm_file id=14)

Kommentar verfassen

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

Nach oben scrollen