Dalam aplikasi JSF (JavaServer Faces), input pengguna dihantar ke pelayan menggunakan permintaan http sebagai permintaan pelanggan. Input pengguna ini dirujuk sebagai nilai. Nilai permintaan ini dihantar ke pelayan dalam bentuk rentetan. Namun begitu, aplikasi JSF menggunakan pelbagai jenis data seperti int, float, double, String, Boolean, date dan sebagainya. Oleh itu sebelum nilai permintaan diproses perlu diubah menjadi jenis data yang sesuai. Proses transformasi ini dirujuk sebagai penukaran. Dalam topik ini, kita akan belajar tentang Penukar JSF.
IKLAN Kursus Popular dalam kategori ini JSF Java Server Faces - Laluan Pembelajaran | 6 Siri KursusMulakan Kursus Pembangunan Perisian Percuma Anda
Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain
Untuk mencapai penukaran dalam aplikasi JSF, rangka kerja JSF menyediakan penukar standard. Penukar ini disediakan sebagai teg dalam pustaka teg teras JSF. Di samping itu, anda boleh mencipta penukar anda sendiri untuk mencapai keperluan aplikasi. Penukar ini dirujuk sebagai penukar tersuai.
Dalam aplikasi JSF, data yang dimasukkan oleh pengguna ke dalam komponen UI perlu ditukar kepada format yang sesuai sebelum ia boleh diteruskan oleh aplikasi. Jadual berikut menyenaraikan teg standard yang disediakan oleh pustaka teg teras JSF untuk melaksanakan penukaran.
Teg teras JSF untuk penukaran data –
f:converter – Teg ini digunakan untuk menambahkan penukar sewenang-wenangnya pada contoh komponen induk.
Contoh
<f:converter converterId = "javax.faces.Integer"/>
f:convertNumber – Teg ini digunakan untuk menambahkan contoh “NumberConverter” pada komponen induk.
Contoh
<c:convertNumber type = "javax.faces.Integer"/>
f:convertDateTime – Teg ini digunakan untuk menambahkan “DateTimeConverter” kepada komponen induk.
Contoh
<f:convertDateTime pattern = "dd/mm/yyyy"/>
Rangka kerja JSF menyediakan penukar standard untuk nombor dan tarikh. Kadangkala dalam aplikasi, kita perlu menukar input pengguna kepada jenis data nombor dan tarikh, jadi kita boleh menggunakan rangka kerja JSF untuk menyediakan penukar standard. Semua penukar standard mengandungi dalam rangka kerja JSF thejavax.faces.convertpackage. Semua penukar digunakan secara tersirat berdasarkan nilai komponen dan jika kami ingin mengakses penukar ini, kami boleh mengaksesnya melalui Id penukar.
Kelas IntegerConverter yang digunakan untuk menukar nilai rentetan input pengguna kepada java.lang.Jenis nilai integer dan id penukarnya ialah javax.faces.Integer.
Contoh
<h:inputText id="age" converter="javax.faces.Integer" />
Kelas BigIntegerConverter yang digunakan untuk menukar nilai rentetan input pengguna kepada jenis nilai java.lang.BigInteger dan id penukarnya ialah javax.faces.BigInteger.
Contoh
<h:inputText id="age" converter="javax.faces.Integer" />
Cara yang sama boleh digunakan untuk jenis integer yang berbeza.
Kelas ShortConverter yang digunakan untuk menukar nilai rentetan input pengguna ke java.lang.Jenis nilai Short dan id conveter nya ialah javax.faces.Short.
Kelas LongConverter yang digunakan untuk menukar nilai rentetan input pengguna ke java.lang.Jenis nilai Short dan id conveter nya ialah javax.faces.Long.
Kelas NumberConverter yang digunakan untuk menukar nilai rentetan input pengguna ke java.lang.Number jenis nilai dan id conveter nya ialah javax.faces.Number.
Contoh
<h:outputText value="#{userBean.height}"> <f:convertNumber maxFractionDigits="2" /> </h:outputText>
Kelas FloatConverter yang digunakan untuk menukar nilai rentetan input pengguna ke jenis nilai java.lang.Float dan id conveternya ialah javax.faces.Float.
Kelas BigDecimalConverter yang digunakan untuk menukar nilai rentetan input pengguna ke java.lang. Jenis nilai BigDecimal dan id conveternya ialah javax.faces.BigDecimal.
Kelas DoubleConverter yang digunakan untuk menukar nilai rentetan input pengguna ke java.lang. Jenis nilai berganda dan id conveternya ialah javax.faces.Double.
Kelas ByteConverter yang digunakan untuk menukar nilai rentetan input pengguna ke jenis nilai java.lang.Byte dan id conveter nya ialah javax.faces.Byte.
Kelas CharacterConverter yang digunakan untuk menukar nilai rentetan input pengguna kepada java.lang. Jenis aksara nilai dan id penukarnya ialah javax.faces.Character.
Kelas BooleanConverter yang digunakan untuk menukar nilai rentetan input pengguna kepada jenis nilai java.lang.Boolean dan id conveter nya ialah javax.faces.Boolean.
Kelas DateTimeConverter yang digunakan untuk menukar nilai rentetan input pengguna ke java.lang. Jenis nilai DateTime dan id conveternya ialah 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.
Atas ialah kandungan terperinci Penukar JSF. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!