In der JSF-Anwendung (JavaServer Faces) werden die Benutzereingaben mithilfe einer HTTP-Anfrage als Client-Anfrage an den Server gesendet. Diese Benutzereingaben werden als Werte bezeichnet. Diese Anforderungswerte werden in Form eines Strings an den Server gesendet. Die JSF-Anwendung verwendet jedoch verschiedene Datentypen wie int, float, double, String, Boolean, date usw. Daher müssen die Anforderungswerte vor der Verarbeitung in die entsprechenden Datentypen umgewandelt werden. Dieser Transformationsprozess wird als Konversion bezeichnet. In diesem Thema lernen wir etwas über JSF-Konverter.
WERBUNG Beliebter Kurs in dieser Kategorie JSF Java Server Faces – Lernpfad | 6-Kurs-ReiheStarten Sie Ihren kostenlosen Softwareentwicklungskurs
Webentwicklung, Programmiersprachen, Softwaretests und andere
Um die Konvertierung in der JSF-Anwendung durchzuführen, stellt das JSF-Framework Standardkonverter bereit. Diese Konverter werden als Tag in der Kern-Tag-Bibliothek von JSF bereitgestellt. Darüber hinaus können Sie Ihre eigenen Konverter erstellen, um die Anwendungsanforderungen zu erfüllen. Diese Konverter werden als benutzerdefinierte Konverter bezeichnet.
In der JSF-Anwendung müssen die von den Benutzern in die UI-Komponenten eingegebenen Daten in ein geeignetes Format konvertiert werden, bevor sie von einer Anwendung verarbeitet werden können. In der folgenden Tabelle sind die Standard-Tags aufgeführt, die von der JSF-Kern-Tag-Bibliothek zum Durchführen von Konvertierungen bereitgestellt werden.
JSF-Kerntags für die Datenkonvertierung –
f:converter – Dieses Tag wird verwendet, um der übergeordneten Instanzkomponente einen beliebigen Konverter hinzuzufügen.
Beispiel
<f:converter converterId = "javax.faces.Integer"/>
f:convertNumber – Dieses Tag wird verwendet, um der übergeordneten Komponente eine „NumberConverter“-Instanz hinzuzufügen.
Beispiel
<c:convertNumber type = "javax.faces.Integer"/>
f:convertDateTime – Dieses Tag wird verwendet, um der übergeordneten Komponente eine „DateTimeConverter“-Instanz hinzuzufügen.
Beispiel
<f:convertDateTime pattern = "dd/mm/yyyy"/>
Das JSF-Framework bietet Standardkonverter für Zahlen und Datumsangaben. Manchmal müssen wir in einer Anwendung die Benutzereingabe in Zahlen- und Datumsdatentypen konvertieren, damit wir das JSF-Framework verwenden können, um Standardkonverter bereitzustellen. Alle Standardkonverter sind im JSF-Framework javax.faces.convertpackage enthalten. Alle Konverter werden implizit basierend auf dem Wert der Komponente angewendet. Wenn wir auf diese Konverter zugreifen möchten, können wir über die Konverter-ID darauf zugreifen.
Die IntegerConverter-Klasse, die zum Konvertieren von Benutzereingabezeichenfolgenwerten in Werte vom Typ java.lang.Integer verwendet wird, und ihre Konverter-ID ist javax.faces.Integer.
Beispiel
<h:inputText id="age" converter="javax.faces.Integer" />
Die BigIntegerConverter-Klasse, die zum Konvertieren von Benutzereingabezeichenfolgenwerten in Werte vom Typ java.lang.BigInteger verwendet wird, und ihre Konverter-ID ist javax.faces.BigInteger.
Beispiel
<h:inputText id="age" converter="javax.faces.Integer" />
Die gleiche Methode kann für die verschiedenen Ganzzahltypen verwendet werden.
Die ShortConverter-Klasse, die verwendet wird, um Benutzereingabezeichenfolgenwerte in Werte vom Typ java.lang.Short zu konvertieren, und ihre Konverter-ID ist javax.faces.Short.
Die LongConverter-Klasse, die zum Konvertieren von Zeichenfolgenwerten der Benutzereingaben in Werte vom Typ „java.lang.Short“ verwendet wird, und deren Konverter-ID „javax.faces.Long“ ist.
Die NumberConverter-Klasse, mit der Benutzereingabezeichenfolgenwerte in Werte vom Typ java.lang.Number konvertiert werden. Die Konverter-ID lautet javax.faces.Number.
Beispiel
<h:outputText value="#{userBean.height}"> <f:convertNumber maxFractionDigits="2" /> </h:outputText>
Die Klasse „FloatConverter“, die zum Konvertieren von Zeichenfolgenwerten der Benutzereingaben in Werte vom Typ „java.lang.Float“ verwendet wird, und deren Konverter-ID „javax.faces.Float“ lautet.
Die BigDecimalConverter-Klasse, die verwendet wird, um Benutzereingabezeichenfolgenwerte in java.lang zu konvertieren. Werte vom Typ BigDecimal und die Konverter-ID ist javax.faces.BigDecimal.
Die DoubleConverter-Klasse, die verwendet wird, um Benutzereingabezeichenfolgenwerte in java.lang zu konvertieren. Double-Typ von Werten und seine Konverter-ID ist javax.faces.Double.
Die ByteConverter-Klasse, die zum Konvertieren von Benutzereingabezeichenfolgenwerten in Werte vom Typ java.lang.Byte verwendet wird, und ihre Konverter-ID ist javax.faces.Byte.
Die CharacterConverter-Klasse, die zum Konvertieren von Benutzereingabezeichenfolgenwerten in java.lang verwendet wird. Der Zeichentyp der Werte und seine Konverter-ID sind javax.faces.Character.
Die BooleanConverter-Klasse, die zum Konvertieren von Zeichenfolgenwerten der Benutzereingaben in Werte vom Typ „java.lang.Boolean“ verwendet wird, und deren Konverter-ID „javax.faces.Boolean“ lautet.
Die DateTimeConverter-Klasse, die zum Konvertieren von Benutzereingabezeichenfolgenwerten in java.lang verwendet wird. Werte vom Typ DateTime und die Konverter-ID sind javax.faces.Datetime.
The EnumConverter class which uses to convert user input string values into java.lang. Enum type of values and its conveter id is javax.faces.Enum.
The JSF convertDateTime contains the following attributes to convert the Date time format.
Example
<h:inputText id="DOB" label = "Date of Birth" value="#{bean.DOB }"> <f:convertDateTime pattern="dd/mm/yyyy" /> </h:inputText>
The JSF convertNumber contains the following attributes to convert Number format. currencyCode – This attribute specifies to apply the currency format.
Example
<h:outputText value = "#{bean.height}"> <f:convertNumber maxFractionDigits = "1" /> </h:outputText>
Let’s see an example of the JSF project.
Create index.xhtml with the following code.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://xmlns.jcp.org/jsf/facelets" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:f="http://xmlns.jcp.org/jsf/core"> <h:form> <h:outputLabel for="name">Name : </h:outputLabel> <h:inputText id="name" value="#{Emp.name}"/><br/> <h:outputLabel for="eid">Eid : </h:outputLabel> <h:inputText id="eid" value="#{Emp.eid}"> <h:outputLabel for="sal">Salary : </h:outputLabel> <h:inputText id="sal" value="#{Emp.sal}"> <f:converter converterId="javax.faces.Integer" /> </h:inputText><br/> <h:commandButton action="disp.xhtml" value="Submit Query"/> </h:form> </html>
Create Emp.java class with the following code in the project.
package jsfp; import javax.faces.bean.ManagedBean; import javax.faces.bean.RequestScoped; @ManagedBean @RequestScoped public class Emp { String name; String eid; int sal; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEid() { return eid; } public void setEid(String eid) { this.eid = eid; } public int getSal() { return sal; } public void setSal(int sal) { this.sal = sal; } }
Create disp.xhtml for the response with the following code.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://xmlns.jcp.org/jsf/facelets" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:f="http://xmlns.jcp.org/jsf/core"> <h:head> <title>Reply Page</title> </h:head> <h:body> <h:outputText value="Welcome #{Emp.name}. Your eid is #{Emp.eid}. Your Salary is #{Emp.sal}."/> </h:body> </html>
An output of the above project in the sequence is –
You fill the details as below –
Once you click the button the output is –
The user inputs are sent to the server using an http request in the form of the string, the request values to be processed first need to be transformed into the appropriate data types such as int, float, double, String, Boolean, date, and so on by using the JSF Converters of JSF framework.
Das obige ist der detaillierte Inhalt vonJSF-Konverter. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!