SlideShare a Scribd company logo
1 of 13
Download to read offline
‫املعلوماتية‬ ‫اهلندسة‬ ‫كلية‬
‫اخلامسة‬ ‫السنة‬
‫والنظم‬ ‫الشبكات‬ ‫قسمي‬ ‫لطالب‬‫و‬‫الربجميات‬ ‫هندسة‬
‫محص‬-‫سوريا‬
‫االلكرتونية‬ ‫التجارة‬ ‫مقرر‬
‫د‬.‫خلوف‬ ‫زينب‬
‫احملاضرة‬‫اخلامسة‬
‫التنقل‬‫بني‬‫الصفحات‬
JSF: Page Navigation
‫أنواع‬‫التنقل‬‫بني‬‫الصفحات‬‫يف‬JSF
‫يت‬ ‫أن‬ ‫ميكن‬ ‫الصفحات‬ ‫بني‬ ‫التنقل‬‫صريح‬ ‫بشكل‬ ‫أو‬ ‫ضمين‬ ‫بشكل‬ ‫م‬.
1.‫تنقل‬‫ضمين‬‫إىل‬‫الصفحات‬:‫ويتم‬‫يف‬‫هذه‬‫يقة‬‫ر‬‫الط‬‫حتديد‬‫الصفحة‬‫اليت‬‫سيتم‬‫اإلنتقال‬‫إليها‬‫من‬‫خالل‬‫النتيجة‬‫اليت‬
‫تعيدها‬‫يقة‬‫ر‬‫الط‬Action Method‫من‬Managed Bean.‫حيث‬‫أن‬‫النتيجة‬‫اليت‬‫يتم‬‫إعادهتا‬‫متثل‬‫إسم‬
‫الصفحة‬‫اليت‬‫سيتم‬‫اإلنتقال‬‫إليها‬‫علما‬‫أن‬‫ه‬‫ليس‬‫بالضرورة‬‫أن‬‫تكون‬‫هذه‬‫النتيجة‬‫سلسلة‬‫حمارف‬‫بل‬‫ميكن‬‫أن‬‫تكون‬
‫قيمة‬‫عددية‬.‫يف‬‫املثال‬(1)،‫عندما‬‫تتم‬‫إعادة‬‫سلسلة‬‫احملارف‬"success"‫يتم‬‫اإلنتقال‬‫إىل‬‫الصفحة‬
success.xhtml‫وعندما‬‫تعاد‬‫سلسلة‬‫احملارف‬"index"‫يتم‬‫اإلنتقال‬‫إىل‬‫الصفحة‬index.xhtml.‫ويف‬
‫املثال‬(2)‫عندما‬‫إعادة‬ ‫تتم‬1‫اإل‬ ‫يتم‬‫نتقال‬‫إ‬‫الصفحة‬ ‫ىل‬1.xhtml‫وعندما‬‫يعاد‬2‫الصفحة‬ ‫إىل‬ ‫اإلنتقال‬ ‫يتم‬
2.xhtml.
public int guessCommand ()
{
if (guess == target)
{
return (1);
}
else
{
this.attempts++;
return (2);
}
}
public String guessCommand ()
{
if (guess == target)
{
return ("success");
}
else
{
this.attempts++;
return ("index");
}
}
‫املثال‬2‫املثال‬1
2.‫التنقل‬‫الصريح‬‫إىل‬‫الصفحات‬:‫يف‬‫هذه‬‫يقة‬‫ر‬‫الط‬‫تتم‬‫إضافة‬‫اعد‬‫و‬‫ق‬‫التنقل‬‫بشكل‬‫يح‬‫ر‬‫ص‬‫إىل‬‫ملف‬‫يفات‬‫ر‬‫التع‬faces-
config.xml،‫هذه‬‫اعد‬‫و‬‫الق‬‫حتدد‬‫بشكل‬‫يح‬‫ر‬‫ص‬‫الصفحة‬‫اليت‬‫سيتم‬‫اإلنتقال‬‫إليها‬‫من‬‫أجل‬‫نتيجة‬‫معينة‬.
‫مالحظة‬:
‫باإل‬ ‫يسمى‬ ‫االنتقال‬ ‫أنواع‬ ‫من‬ ‫نوع‬ ‫ويوجد‬‫الثاب‬ ‫نتقال‬Static Navigation‫اليت‬ ‫الصفحة‬ ‫إسم‬ ‫وضع‬ ‫خالل‬ ‫من‬ ‫ويتم‬
‫خاصية‬ ‫يف‬ ‫إليها‬ ‫اإلنتقال‬ ‫يراد‬Action‫األوامر‬ ‫لزر‬:
<h:commandButton ... action="fixed-page/">
‫املثال‬ ‫يف‬ ‫كما‬:
<h:commandButton ... action="/view/result-page-1.xhtml/">
‫ال‬ ‫املسار‬ ‫حتديد‬ ‫جيب‬ ‫حيث‬‫للصفحة‬ ‫صحيح‬.
‫التنقل‬‫الصريح‬‫إىل‬‫الصفحات‬
Explicit Page Navigation
‫التنقل‬‫يح‬‫ر‬‫الص‬‫بني‬‫الصفحات‬‫يتم‬‫امللف‬ ‫يف‬ ‫التنقل‬ ‫اعد‬‫و‬‫ق‬ ‫يف‬‫ر‬‫تع‬ ‫خالل‬ ‫من‬faces-config.xml‫يف‬ ،Netbeans‫يتم‬
‫امللف‬ ‫إنشاء‬faces-config.xml‫للشكل‬ ً‫ا‬‫وفق‬:
‫اضي‬‫رت‬‫إف‬ ‫بشكل‬ ‫ليتوضع‬‫اجمللد‬ ‫ضمن‬WEB-INF‫كم‬‫الشكل‬ ‫يف‬ ‫امبني‬:
‫العام‬ ‫الشكل‬‫للملف‬faces-config.xml‫الشكل‬ ‫يف‬ ‫مبني‬:
‫العنصر‬<faces-config>‫ميثل‬‫جذر‬‫ملف‬‫ـ‬‫ل‬‫ا‬xml‫ويتضمن‬‫مجيع‬‫يفات‬‫ر‬‫التع‬‫اخلاصة‬‫بالتطبيق‬‫غري‬‫تلك‬‫املعرفة‬‫يف‬‫ملف‬
‫موصف‬‫إستخدام‬‫التطبيق‬(web.xml)Web Deployment Descriptor.‫كل‬‫العناصر‬‫يف‬‫امللف‬faces-
config.xml‫مثل‬(application, managed-bean, ..., factory)‫هي‬‫ية‬‫ر‬‫إختيا‬‫ميكن‬‫و‬‫أن‬‫يتضمن‬‫امللف‬
‫احد‬‫و‬‫أو‬‫أكثر‬‫من‬‫هذه‬‫العناصر‬.‫التنقل‬ ‫اعد‬‫و‬‫ق‬ ‫يف‬‫ر‬‫تع‬ ‫كيفية‬‫على‬ ‫كز‬‫سنر‬ ‫احملاضرة‬ ‫هذه‬ ‫يف‬.
‫ملف‬ ‫عن‬ ‫مثال‬faces-config.xml‫الصفح‬ ‫بني‬ ‫التنقل‬ ‫يف‬‫ر‬‫لتع‬ ‫اعد‬‫و‬‫الق‬ ‫من‬ ‫جمموعة‬ ‫يتضمن‬‫ات‬:
faces-config.xml
1 <?xml version="1.0"?>
2 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
5 http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
6 version="2.0">
7
8 <navigation-rule>
9 <from-view-id>/start-page.xhtml</from-view-id>
10 <navigation-case>
11 <from-outcome>too-short</from-outcome>
12 <to-view-id>error-message.xhtml</to-view-id>
13 </navigation-case>
14 </navigation-rule>
15 <navigation-rule>
16 <from-view-id>/start-page.xhtml</from-view-id>
17 <navigation-case>
18 <from-outcome>page1</from-outcome>
19 <to-view-id>result-page-1.xhtml</to-view-id>
20 </navigation-case>
21 <navigation-case>
22 <from-outcome>page2</from-outcome>
23 <to-view-id>result-page-2.xhtml</to-view-id>
24 </navigation-case>
25 </navigation-rule>
26 </faces-config>
27
‫اعد‬‫و‬‫ق‬‫التنقل‬(Navigation Rules)‫امللف‬ ‫يف‬faces-config.xml
‫العنصر‬<navigation-rule>‫أكثرهم‬ ‫من‬ ، ‫األبناء‬ ‫العناصر‬ ‫من‬ ‫عدد‬ ‫العنصر‬ ‫هلذا‬ ‫يكون‬ ‫أن‬ ‫ميكن‬ ، ‫قاعدة‬ ‫يعرف‬
ً‫ا‬‫استخدام‬:
CHILD ELEMENTMULTIPLICITYDESCRIPTION
from-view-idzero or one‫تطبق‬ ‫اليت‬ ‫الصفحة‬ ‫حتدد‬‫يكن‬ ‫مل‬ ‫إذا‬ ، ‫القاعدة‬ ‫عليها‬
‫الصفحات‬ ‫كل‬‫على‬ ‫تطبق‬ ‫فالقاعدة‬ ‫موجود‬ ‫العنصر‬ ‫هذا‬.
navigation-casezero to many‫حتقق‬ ‫إذا‬ ‫إليها‬ ‫اإلنتقال‬ ‫سيتم‬ ‫اليت‬ ‫التالية‬ ‫الصفحة‬ ‫حيدد‬
‫معني‬ ‫ج‬‫خر‬ ‫أو‬ ‫شرط‬.
‫مالحظة‬:‫عنصر‬ ‫أي‬ ‫التتضمن‬ ‫قد‬ ‫القاعدة‬ ‫أن‬ ‫السابق‬ ‫اجلدول‬ ‫من‬ ‫املالحظ‬ ‫من‬navigation-case‫أخطاء‬ ‫اليعطي‬ ‫هذا‬ ،
‫ـ‬‫ل‬ ‫نتيجة‬ ‫هناك‬ ‫كان‬‫ان‬ ‫خطأ‬ ‫حيصل‬ ‫ولكن‬ ‫بالتنفيذ‬Action Method‫حالة‬ ‫واليوجد‬navigation-case‫هلذه‬ ‫افقة‬‫و‬‫م‬
‫النتيجة‬.
‫للعنصر‬<navigation-case>ً‫ا‬‫استخدام‬ ‫أكثرها‬ ‫ومن‬ ‫أبناء‬ ‫عناصر‬ ً‫ا‬‫أيض‬.
CHILD ELEMENTMULTIPLICITYDESCRIPTION
from-outcomezero or one‫مثل‬ ‫ج‬‫خر‬ ‫تعرف‬"success"‫أو‬"failure"‫ـ‬‫ل‬
Action Method
to-view-idexactly one‫حتققت‬ ‫إذا‬ ‫إليها‬ ‫االنتقال‬ ‫سيتم‬ ‫اليت‬ ‫التالية‬ ‫الصفحة‬ ‫تعرف‬
‫احلالة‬ ‫هذه‬.
from-actionzero or one‫هذه‬ ‫تطبيق‬ ‫يتم‬ ‫حىت‬ ‫يتنفذ‬ ‫أن‬ ‫جيب‬ ‫تعبري‬ ‫على‬ ‫تدل‬ ‫قيمة‬
‫القاعدة‬.
redirectzero or one‫ـ‬‫ب‬ ‫فة‬‫ر‬‫املع‬ ‫للصفحة‬ ‫اإلنتقال‬ ‫أن‬ ‫حيدد‬to-view-id‫جيب‬
‫ـ‬‫ل‬ ً‫ا‬‫وفق‬ ‫يتم‬ ‫أن‬HTTP redirect.
‫مساوئ‬‫وحماسن‬‫التنقل‬‫الصريح‬‫للصفحات‬:‫بتخصيص‬ ‫يسمح‬ ‫الصريح‬ ‫التنقل‬ ‫ولكن‬ ‫أبسط‬ ‫يكون‬ ‫قد‬ ‫الضمين‬ ‫اإلنتقال‬
‫أكرب‬ ‫مرونة‬ ‫يعطي‬ ‫هذا‬ ، ‫جافا‬ ‫ملفات‬ ‫يف‬ ‫البحث‬ ‫بدل‬ ‫التنقل‬ ‫لقواعد‬ ‫واحد‬ ‫مكان‬‫الشروط‬ ‫إسناد‬ ‫ميكن‬ ‫أنه‬ ‫حيث‬ ‫من‬
‫إستخدام‬ ‫وميكن‬ ‫الحقا‬ ‫خمتلفة‬ ‫لصفحات‬wildcards‫الشرطي‬ ‫التنقل‬ ‫إستخدام‬ ‫أو‬ ‫البدء‬ ‫لصفحات‬.
‫مثال‬‫عن‬‫التنقل‬‫الصريح‬‫بني‬‫الصفحات‬( :http://www.coreservlets.com/JSF-Tutorial/jsf2/)
‫يف‬‫هذا‬‫املثال‬‫صفحة‬ ،‫البداية‬start-page-1.xhtml،‫تتضمن‬‫كونة‬ُ‫م‬‫إلدخال‬‫نص‬inputText‫وزر‬‫امر‬‫و‬‫أ‬
commandButton.‫إذا‬‫أدخل‬‫املستخدم‬‫رسالة‬‫مكونة‬‫من‬‫حمرف‬‫أكثر‬ ‫أو‬ ‫ني‬‫يتم‬‫بشكل‬‫ائي‬‫و‬‫عش‬‫إخ‬‫ت‬‫يار‬‫صفحة‬‫لإلنتقال‬
‫إليها‬‫ويتم‬‫فيها‬‫عرض‬‫الرسالة‬‫املدخلة‬‫وإال‬‫يتم‬ ‫فإنه‬‫اإلنتقا‬‫ل‬‫لصفحة‬‫تعرض‬‫رسالة‬‫خطأ‬.
‫من‬ ‫مكون‬ ‫التطبيق‬Managed Bean‫هو‬SimpleController.java:
SimpleController.java
1 package coreservlets;
2
3 import java.io.Serializable;
4 import javax.enterprise.context.RequestScoped;
5 import javax.inject.Named;
6 @RequestScoped
7 @Named
8 public class SimpleController {
9 private String message="";
10
11 public String getMessage() {
12 return(message);
13 }
14
15 public void setMessage(String message) {
16 this.message = message;
17 }
18
19 public String doNavigation() {
20 if (message.trim().length() < 2) {
21 return("too-short");
22 } else {
23 String[] results =
24 { "page1", "page2" };
25 return(RandomUtils.randomElement(results));
26 }
27 }
28 }
29
‫الصف‬RandomUtils.java‫ائي‬‫و‬‫عش‬ ‫بشكل‬ ‫صف‬ ‫من‬ ‫عنصر‬ ‫باختيار‬ ‫يسمح‬ ‫مساعد‬ ‫صف‬ ‫هو‬.
RandomUtils.java
1 package coreservlets;
2
3 import java.util.Random;
4
5 public class RandomUtils {
6 private static Random r = new Random();
7
8 public static int randomInt(int range) {
9 return(r.nextInt(range));
10 }
11
12 public static int randomIndex(Object[] array) {
13 return(randomInt(array.length));
14 }
15
16 public static <T> T randomElement(T[] array) {
17 return(array[randomIndex(array)]);
18 }
19 }
20
‫صفحات‬ ‫من‬ ‫جمموعة‬ ‫من‬ ‫التطبيق‬ ‫يتألف‬ ‫كذلك‬‫و‬JSF‫الصفحات‬ ‫هلذه‬ ‫عرض‬ ‫يلي‬ ‫فيم‬ ،.
‫الصفحة‬start-page.xhtml
start-page.xhtml
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml"
4 xmlns:h="http://java.sun.com/jsf/html">
5 <h:head><title>JSF 2.0: Basic Navigation Rules</title>
6 <link href="./css/styles.css"
7 rel="stylesheet" type="text/css"/>
8 </h:head>
9 <h:body>
10 <div align="center">
11 <table border="5">
12 <tr><th class="title">JSF 2.0: Basic Navigation Rules</th></tr>
13 </table>
14 <p/>
15 <h:form>
16 Your message:
17 <h:inputText value="#{simpleController.message}"/>
18 <br/>
19 <h:commandButton value="Show Results"
20 action="#{simpleController.doNavigation}"/>
21 </h:form>
22 </div>
23 </h:body>
24 </html>
25
‫الصفحة‬result-page-1.xhtml
result-page-1.xhtml
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml"
4 xmlns:h="http://java.sun.com/jsf/html">
5 <h:head><title>Result Page 1</title>
6 <link href="./css/styles.css"
7 rel="stylesheet" type="text/css"/>
8 </h:head>
9 <h:body>
10 <div align="center">
11 <table border="5">
12 <tr><th class="title">Result Page 1</th></tr>
13 </table>
14 <p/>
15
16 <h2>Your message: "#{simpleController.message}"</h2>
17
18 </div></h:body></html>
19
‫الصفحة‬result-page-2.xhtml
result-page-2.xhtml
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml"
4 xmlns:h="http://java.sun.com/jsf/html">
5 <h:head><title>Result Page 2</title>
6 <link href="./css/styles.css"
7 rel="stylesheet" type="text/css"/>
8 </h:head>
9 <h:body>
10 <div align="center">
11 <table border="5">
12 <tr><th class="title">Result Page 2</th></tr>
13 </table>
14 <p/>
15
16 <h2>Your message: "#{simpleController.message}"</h2>
17
18 </div></h:body></html>
19
‫الصفحة‬error-message.xhtml
error-message.xhtml
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml"
4 xmlns:h="http://java.sun.com/jsf/html">
5 <h:head><title>Error: Message Too Short</title>
6 <link href="./css/styles.css"
7 rel="stylesheet" type="text/css"/>
8 </h:head>
9 <h:body>
10 <div align="center">
11 <table border="5">
12 <tr><th class="title">Error: Message Too Short</th></tr>
13 </table>
14 <p/>
15
16 <h2>Short message.</h2>
17
18 </div></h:body></html>
19
‫امللف‬faces-config.xml
faces-config.xml
1 <?xml version="1.0"?>
2 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
5 http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
6 version="2.0">
7
8 <navigation-rule>
9 <from-view-id>/start-page.xhtml</from-view-id>
10 <navigation-case>
11 <from-outcome>too-short</from-outcome>
12 <to-view-id>error-message.xhtml</to-view-id>
13 </navigation-case>
14 </navigation-rule>
15 <navigation-rule>
16 <from-view-id>/start-page.xhtml</from-view-id>
17 <navigation-case>
18 <from-outcome>page1</from-outcome>
19 <to-view-id>result-page-1.xhtml</to-view-id>
20 </navigation-case>
21 <navigation-case>
22 <from-outcome>page2</from-outcome>
23 <to-view-id>result-page-2.xhtml</to-view-id>
24 </navigation-case>
25 </navigation-rule>
26 </faces-config>
27
‫إستخدام‬from-action
‫املثال‬ ‫يف‬ ‫كما‬، ‫النتيجة‬ ‫نفس‬ ‫خمتلفتني‬ ‫يقتني‬‫ر‬‫ط‬ ‫تعيد‬ ‫قد‬ ‫األحيان‬ ‫بعض‬ ‫يف‬:
package bean;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean
@SessionScoped
public class PageController {
public String processPage1() {
return "success";
}
public String processPage2() {
return "success";
}
}
‫نستخدم‬ ‫احلالة‬ ‫هذه‬ ‫يف‬from-action‫االنتقال‬ ‫حاليت‬ ‫بني‬ ‫للتميز‬.
<?xml version='1.0' encoding='UTF-8'?>
<faces-config version="2.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
<navigation-rule>
<from-view-id>index.xhtml</from-view-id>
<navigation-case>
<from-action>#{pageController.processPage1}</from-action>
<from-outcome>success</from-outcome>
<to-view-id>page1.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-action>#{pageController.processPage2}</from-action>
<from-outcome>success</from-outcome>
<to-view-id>page2.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
</faces-config>
‫البدل‬ ‫حمرف‬ ‫استخدام‬*‫اعد‬‫و‬‫الق‬ ‫يف‬
‫يف‬ ‫الصفحة‬ ‫اسم‬ ‫بدل‬ ‫اعد‬‫و‬‫الق‬ ‫يف‬ ‫البدل‬ ‫حمرف‬ ‫استخدام‬ ‫املمكن‬ ‫من‬<from-view-id>‫التايل‬ ‫املثال‬ ‫يف‬ ‫كما‬:
<navigation-rule>
<from-view-id>*</from-view-id>
<navigation-case>
<from-outcome>too-short</from-outcome>
<to-view-id>/view/error-message.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
‫بداية‬ ‫صفحة‬ ‫أي‬ ‫أجل‬ ‫من‬ ‫تتحقق‬ ‫القاعدة‬ ‫هذد‬ ‫أن‬ ‫أي‬<from-view-id>.
‫الشرطي‬ ‫اإلنتقال‬ ‫قواعد‬Conditional Navigation Rules
‫الومسة‬ ‫استخدام‬ ‫خالل‬ ‫من‬ ‫شرطية‬ ‫انتقال‬ ‫اعد‬‫و‬‫ق‬ ‫يف‬‫ر‬‫تع‬ ‫املمكن‬ ‫من‬<if>‫التايل‬ ‫املثال‬ ‫يف‬ ‫كما‬،:
<navigation-case>
<from-outcome>success</from-outcome>
<if>#{user.newVisitor}</if>
<to-view-id>/welcome-new.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>success</from-outcome>
<if>#{!user.newVisitor}</if>
<to-view-id>/welcome-back.xhtml</to-view-id>
</navigation-case>
‫النتيجة‬ ‫كانت‬‫إذا‬ ‫األوىل‬ ‫احلالة‬ ‫يف‬success‫و‬#{user.newVisitor}‫أن‬ ‫حيث‬ ‫صحيحة‬user‫هو‬
ManagedBean‫و‬newVisitor‫ـ‬‫ل‬ ‫منطقي‬ ‫نوع‬ ‫من‬ ‫خلاصية‬ ‫اسم‬user.
‫ديناميكي‬ ‫بشكل‬ ‫إليها‬ ‫اإلنتقال‬ ‫سيتم‬ ‫اليت‬ ‫الصفحة‬ ‫إسم‬ ‫حتديد‬ ‫إمكانية‬Dynamic To-Ids
‫ل‬‫و‬‫الت‬ ‫ملف‬ ‫يف‬ ‫ديناميكي‬ ‫بشكل‬ ‫إليها‬ ‫اإلنتقال‬ ‫سيتم‬ ‫اليت‬ ‫الصفحة‬ ‫حساب‬ ‫املمكن‬ ‫من‬‫يف‬facse-config.xml‫من‬ ‫بدل‬ ،
‫إعادة‬ ‫كنتيجة‬‫مباشر‬ ‫غري‬ ‫بشكل‬ ‫الصفحة‬ ‫إسم‬ ‫حتديد‬ ‫يتم‬ ‫أن‬.‫الصفحة‬ ‫من‬ ‫االنتقال‬ ‫سيتم‬ ‫التايل‬ ‫املثال‬ ‫يف‬/exam-
question.xhtml‫التعبري‬ ‫تنفيذ‬ ‫من‬ ‫الناتج‬ ‫اإلسم‬ ‫ذات‬ ‫الصفحة‬ ‫إىل‬#{exam.nextQuestionPage}
<from-view-id>/exam-question.xhtml</from-view-id>
<navigation-case>
<to-view-id>#{exam.nextQuestionPage}.xhtml</to-view-id>
</navigation-case>
‫بني‬ ‫الفرق‬Page Forward vs Page Redirect
‫الصفحة‬ ‫توجيه‬ ‫إستخدام‬ ‫عند‬Page Forward‫ـ‬‫ل‬‫ا‬ ‫تغيري‬ ‫اليتم‬URL‫اجلد‬ ‫الصفحة‬ ‫إىل‬ ‫االنتقال‬ ‫عند‬‫يدة‬.‫إستخدام‬ ‫عند‬ ‫أما‬
‫التوجيه‬ ‫إعادة‬redirectionPage‫ـ‬‫ل‬‫ا‬ ‫تغيري‬ ‫يتم‬URL‫اجلديدة‬ ‫الصفحة‬ ‫إىل‬ ‫اإلنتقال‬ ‫عند‬.
‫يوجد‬ ‫عملي‬ ‫بشكل‬ ‫التوجيه‬ ‫إعاد‬ ‫لتحقيق‬‫طرق‬ ‫عدة‬:
‫األوىل‬ ‫يقة‬‫ر‬‫الط‬‫اخلاصية‬ ‫خالل‬ ‫من‬ ‫ثابت‬ ‫بشكل‬Action‫للزر‬:
<h:form>
<h:commandButton action="page1?faces-redirect=true" value="Page1" />
</h:form>
‫الثانية‬ ‫يقة‬‫ر‬‫الط‬‫ال‬ ‫تعيدها‬ ‫اليت‬ ‫القيمة‬ ‫خالل‬ ‫من‬Action Method:
public String sayHello() {
if (age < 11) {
helloText = "Hello " + name + "!";
} else {
helloText = "Good Morning " + name + "!";
}
return ("home?faces-redirect=true");
}
‫يقة‬‫ر‬‫الط‬‫الثالثة‬‫الومسة‬ ‫استخدام‬ ‫خالل‬ ‫من‬<redirect />‫ضمن‬<navigation-case />
<navigation-rule>
<from-view-id>start.xhtml</from-view-id>
<navigation-case>
<from-outcome>page1</from-outcome>
<to-view-id>page1.xhtml</to-view-id>
<redirect />
</navigation-case>
</navigation-rule>
‫احملاضرة‬ ‫اجع‬‫ر‬‫م‬
1. The Java EE 6 Tutorial.
http://download.oracle.com/javaee/6/tutorial/doc/javaeetutorial6.pdf
2. JSF 2.0: Explicit Page Navigation and faces-con_g.xml, available
from:http://www.coreservlets.com/JSF-Tutorial/jsf2/
3. Mastering JavaServer Faces, by Bill Dudney, Jonathan Lehr, Bill Willis, and LeRoy
Mattingly.
4. JSF 2.0 lecture notes by Dr. Beatrice Amrhein, available from:
http://sws.bfh.ch/~amrhein/
5. JSF 2.0 Tutorial, available from: http://www.mkyong.com/jsf2/

More Related Content

Viewers also liked

EXCURISON WITH PICNIC
EXCURISON WITH PICNICEXCURISON WITH PICNIC
EXCURISON WITH PICNICHOTEL TISA
 
Pere brachfield publica el libro Análisis del Moroso Profesional
Pere brachfield publica el libro Análisis del Moroso ProfesionalPere brachfield publica el libro Análisis del Moroso Profesional
Pere brachfield publica el libro Análisis del Moroso ProfesionalEAE Business School
 
ProcesoProductivo del pan_Gutiérrez
ProcesoProductivo del pan_Gutiérrez ProcesoProductivo del pan_Gutiérrez
ProcesoProductivo del pan_Gutiérrez favioGuiterrez
 
Trabajo Final Opinión Pública Carmen Rojas Liedo
Trabajo Final Opinión Pública Carmen Rojas Liedo Trabajo Final Opinión Pública Carmen Rojas Liedo
Trabajo Final Opinión Pública Carmen Rojas Liedo carmenroliedo
 
Redacción de textos
Redacción de textosRedacción de textos
Redacción de textosDACP96
 
Immediate Facility Needs In Sonoma County
Immediate Facility Needs In Sonoma CountyImmediate Facility Needs In Sonoma County
Immediate Facility Needs In Sonoma CountyAlfredo Perez
 
Cv curriculum vitae, fernando machado - executivo, gestor e consultor maste...
Cv   curriculum vitae, fernando machado - executivo, gestor e consultor maste...Cv   curriculum vitae, fernando machado - executivo, gestor e consultor maste...
Cv curriculum vitae, fernando machado - executivo, gestor e consultor maste...d'europeu, Fernando Machado
 
JKBernard_Resume_Dec16_doc
JKBernard_Resume_Dec16_docJKBernard_Resume_Dec16_doc
JKBernard_Resume_Dec16_docJohn Bernard
 

Viewers also liked (11)

EXCURISON WITH PICNIC
EXCURISON WITH PICNICEXCURISON WITH PICNIC
EXCURISON WITH PICNIC
 
Pere brachfield publica el libro Análisis del Moroso Profesional
Pere brachfield publica el libro Análisis del Moroso ProfesionalPere brachfield publica el libro Análisis del Moroso Profesional
Pere brachfield publica el libro Análisis del Moroso Profesional
 
ProcesoProductivo del pan_Gutiérrez
ProcesoProductivo del pan_Gutiérrez ProcesoProductivo del pan_Gutiérrez
ProcesoProductivo del pan_Gutiérrez
 
Trabajo Final Opinión Pública Carmen Rojas Liedo
Trabajo Final Opinión Pública Carmen Rojas Liedo Trabajo Final Opinión Pública Carmen Rojas Liedo
Trabajo Final Opinión Pública Carmen Rojas Liedo
 
Redacción de textos
Redacción de textosRedacción de textos
Redacción de textos
 
Immediate Facility Needs In Sonoma County
Immediate Facility Needs In Sonoma CountyImmediate Facility Needs In Sonoma County
Immediate Facility Needs In Sonoma County
 
Perfil de temperatura
Perfil de temperaturaPerfil de temperatura
Perfil de temperatura
 
Lec1 ecom fall16
Lec1 ecom fall16Lec1 ecom fall16
Lec1 ecom fall16
 
Cv curriculum vitae, fernando machado - executivo, gestor e consultor maste...
Cv   curriculum vitae, fernando machado - executivo, gestor e consultor maste...Cv   curriculum vitae, fernando machado - executivo, gestor e consultor maste...
Cv curriculum vitae, fernando machado - executivo, gestor e consultor maste...
 
JKBernard_Resume_Dec16_doc
JKBernard_Resume_Dec16_docJKBernard_Resume_Dec16_doc
JKBernard_Resume_Dec16_doc
 
Vietnam
VietnamVietnam
Vietnam
 

Similar to Navigation

الدرس الثالث عشر
الدرس الثالث عشرالدرس الثالث عشر
الدرس الثالث عشرAnas Aloklah
 
الدرس الخامس عشر
الدرس الخامس عشرالدرس الخامس عشر
الدرس الخامس عشرAnas Aloklah
 
الدرس الرابع عشر
الدرس الرابع عشرالدرس الرابع عشر
الدرس الرابع عشرAnas Aloklah
 
اسئلة نهائية لمقرر تقنية تصميم صفحات الويب - 1266
اسئلة نهائية لمقرر تقنية تصميم صفحات الويب - 1266اسئلة نهائية لمقرر تقنية تصميم صفحات الويب - 1266
اسئلة نهائية لمقرر تقنية تصميم صفحات الويب - 1266جامعة القدس المفتوحة
 
خدمات الويب (Web Services) و كيف تنشئها
 خدمات الويب (Web Services) و كيف تنشئها  خدمات الويب (Web Services) و كيف تنشئها
خدمات الويب (Web Services) و كيف تنشئها lunarhalo
 
الدرس العاشر
الدرس العاشرالدرس العاشر
الدرس العاشرAnas Aloklah
 
الدرس الثاني
الدرس الثانيالدرس الثاني
الدرس الثانيAnas Aloklah
 
باللغة العربية jQuery دورة
 باللغة العربية jQuery دورة باللغة العربية jQuery دورة
باللغة العربية jQuery دورةanees abu-hmaid
 
الفصل الاول
الفصل الاولالفصل الاول
الفصل الاولHanaa
 
الفصل الاول
الفصل الاولالفصل الاول
الفصل الاولHanaa
 
Picking.pdf
Picking.pdfPicking.pdf
Picking.pdfsoory1
 
إنشاء ورسم المخططات الشبكية
إنشاء ورسم المخططات الشبكيةإنشاء ورسم المخططات الشبكية
إنشاء ورسم المخططات الشبكيةDr. Mahmoud Al-Naimi
 
أول كتاب لتطوير المنتديات
أول كتاب لتطوير المنتدياتأول كتاب لتطوير المنتديات
أول كتاب لتطوير المنتدياتguestf91808
 
Php my admin
Php my adminPhp my admin
Php my adminkufa
 

Similar to Navigation (15)

الدرس الثالث عشر
الدرس الثالث عشرالدرس الثالث عشر
الدرس الثالث عشر
 
الدرس الخامس عشر
الدرس الخامس عشرالدرس الخامس عشر
الدرس الخامس عشر
 
الدرس الرابع عشر
الدرس الرابع عشرالدرس الرابع عشر
الدرس الرابع عشر
 
اسئلة نهائية لمقرر تقنية تصميم صفحات الويب - 1266
اسئلة نهائية لمقرر تقنية تصميم صفحات الويب - 1266اسئلة نهائية لمقرر تقنية تصميم صفحات الويب - 1266
اسئلة نهائية لمقرر تقنية تصميم صفحات الويب - 1266
 
خدمات الويب (Web Services) و كيف تنشئها
 خدمات الويب (Web Services) و كيف تنشئها  خدمات الويب (Web Services) و كيف تنشئها
خدمات الويب (Web Services) و كيف تنشئها
 
الدرس العاشر
الدرس العاشرالدرس العاشر
الدرس العاشر
 
[Arabic] Apache sqoop
[Arabic] Apache sqoop[Arabic] Apache sqoop
[Arabic] Apache sqoop
 
الدرس الثاني
الدرس الثانيالدرس الثاني
الدرس الثاني
 
باللغة العربية jQuery دورة
 باللغة العربية jQuery دورة باللغة العربية jQuery دورة
باللغة العربية jQuery دورة
 
الفصل الاول
الفصل الاولالفصل الاول
الفصل الاول
 
الفصل الاول
الفصل الاولالفصل الاول
الفصل الاول
 
Picking.pdf
Picking.pdfPicking.pdf
Picking.pdf
 
إنشاء ورسم المخططات الشبكية
إنشاء ورسم المخططات الشبكيةإنشاء ورسم المخططات الشبكية
إنشاء ورسم المخططات الشبكية
 
أول كتاب لتطوير المنتديات
أول كتاب لتطوير المنتدياتأول كتاب لتطوير المنتديات
أول كتاب لتطوير المنتديات
 
Php my admin
Php my adminPhp my admin
Php my admin
 

Recently uploaded

دور مجتمعات التعلم في تحسين جودة الحياة الجامعية .pdf
دور مجتمعات التعلم في تحسين جودة الحياة الجامعية .pdfدور مجتمعات التعلم في تحسين جودة الحياة الجامعية .pdf
دور مجتمعات التعلم في تحسين جودة الحياة الجامعية .pdf575cqhpbb7
 
الوعي المعلوماتي لدى العاملين في المكتبات و مراكز المعلومات
الوعي المعلوماتي لدى العاملين في المكتبات و مراكز المعلوماتالوعي المعلوماتي لدى العاملين في المكتبات و مراكز المعلومات
الوعي المعلوماتي لدى العاملين في المكتبات و مراكز المعلوماتMohamadAljaafari
 
لطلاب المرحلة الابتدائية طرق تدريس التعبير الكتابي
لطلاب المرحلة الابتدائية طرق تدريس التعبير الكتابيلطلاب المرحلة الابتدائية طرق تدريس التعبير الكتابي
لطلاب المرحلة الابتدائية طرق تدريس التعبير الكتابيfjalali2
 
عرض تقديمي دور مجتمعات التعليم في تحسين جودة الحياة الجامعية .pdf
عرض تقديمي دور مجتمعات التعليم في تحسين جودة الحياة الجامعية .pdfعرض تقديمي دور مجتمعات التعليم في تحسين جودة الحياة الجامعية .pdf
عرض تقديمي دور مجتمعات التعليم في تحسين جودة الحياة الجامعية .pdfr6jmq4dqcb
 
عرض تقديمي تكليف رقم (1).الرسوم التعليمية
عرض تقديمي تكليف رقم (1).الرسوم  التعليميةعرض تقديمي تكليف رقم (1).الرسوم  التعليمية
عرض تقديمي تكليف رقم (1).الرسوم التعليميةfsaied902
 
1-G9-حل درس سورة الواقعة للصف التاسع 57-74 (1).pptx
1-G9-حل درس سورة الواقعة للصف التاسع 57-74 (1).pptx1-G9-حل درس سورة الواقعة للصف التاسع 57-74 (1).pptx
1-G9-حل درس سورة الواقعة للصف التاسع 57-74 (1).pptxAhmedFares228976
 
التعلم المؤسسي في المؤسسات الأكاديمية. pptx
التعلم المؤسسي في المؤسسات الأكاديمية. pptxالتعلم المؤسسي في المؤسسات الأكاديمية. pptx
التعلم المؤسسي في المؤسسات الأكاديمية. pptxyjana1298
 
sass session by ali ramadan to themifiiy
sass session by ali ramadan to themifiiysass session by ali ramadan to themifiiy
sass session by ali ramadan to themifiiyh456ad
 
تطبيقات الذكاء الاصطناعي و استخداماتها في العلوم البيولوجية والطبية
تطبيقات الذكاء الاصطناعي و استخداماتها   في العلوم البيولوجية والطبيةتطبيقات الذكاء الاصطناعي و استخداماتها   في العلوم البيولوجية والطبية
تطبيقات الذكاء الاصطناعي و استخداماتها في العلوم البيولوجية والطبيةMohammad Alkataan
 
الترادف بين اللغة العربية والإنجليزية.pptx
الترادف بين اللغة العربية والإنجليزية.pptxالترادف بين اللغة العربية والإنجليزية.pptx
الترادف بين اللغة العربية والإنجليزية.pptxssuser53c5fe
 
إعادة الإعمار-- غزة فلسطين سوريا العراق
إعادة الإعمار--  غزة  فلسطين سوريا العراقإعادة الإعمار--  غزة  فلسطين سوريا العراق
إعادة الإعمار-- غزة فلسطين سوريا العراقOmarSelim27
 
تهيئة ممتعة استراتيجية شريط الذكريات.pptx
تهيئة ممتعة استراتيجية شريط الذكريات.pptxتهيئة ممتعة استراتيجية شريط الذكريات.pptx
تهيئة ممتعة استراتيجية شريط الذكريات.pptxfjalali2
 
الصف الثاني الاعدادي -علوم -الموجات .pptx
الصف الثاني الاعدادي -علوم -الموجات .pptxالصف الثاني الاعدادي -علوم -الموجات .pptx
الصف الثاني الاعدادي -علوم -الموجات .pptxv2mt8mtspw
 

Recently uploaded (13)

دور مجتمعات التعلم في تحسين جودة الحياة الجامعية .pdf
دور مجتمعات التعلم في تحسين جودة الحياة الجامعية .pdfدور مجتمعات التعلم في تحسين جودة الحياة الجامعية .pdf
دور مجتمعات التعلم في تحسين جودة الحياة الجامعية .pdf
 
الوعي المعلوماتي لدى العاملين في المكتبات و مراكز المعلومات
الوعي المعلوماتي لدى العاملين في المكتبات و مراكز المعلوماتالوعي المعلوماتي لدى العاملين في المكتبات و مراكز المعلومات
الوعي المعلوماتي لدى العاملين في المكتبات و مراكز المعلومات
 
لطلاب المرحلة الابتدائية طرق تدريس التعبير الكتابي
لطلاب المرحلة الابتدائية طرق تدريس التعبير الكتابيلطلاب المرحلة الابتدائية طرق تدريس التعبير الكتابي
لطلاب المرحلة الابتدائية طرق تدريس التعبير الكتابي
 
عرض تقديمي دور مجتمعات التعليم في تحسين جودة الحياة الجامعية .pdf
عرض تقديمي دور مجتمعات التعليم في تحسين جودة الحياة الجامعية .pdfعرض تقديمي دور مجتمعات التعليم في تحسين جودة الحياة الجامعية .pdf
عرض تقديمي دور مجتمعات التعليم في تحسين جودة الحياة الجامعية .pdf
 
عرض تقديمي تكليف رقم (1).الرسوم التعليمية
عرض تقديمي تكليف رقم (1).الرسوم  التعليميةعرض تقديمي تكليف رقم (1).الرسوم  التعليمية
عرض تقديمي تكليف رقم (1).الرسوم التعليمية
 
1-G9-حل درس سورة الواقعة للصف التاسع 57-74 (1).pptx
1-G9-حل درس سورة الواقعة للصف التاسع 57-74 (1).pptx1-G9-حل درس سورة الواقعة للصف التاسع 57-74 (1).pptx
1-G9-حل درس سورة الواقعة للصف التاسع 57-74 (1).pptx
 
التعلم المؤسسي في المؤسسات الأكاديمية. pptx
التعلم المؤسسي في المؤسسات الأكاديمية. pptxالتعلم المؤسسي في المؤسسات الأكاديمية. pptx
التعلم المؤسسي في المؤسسات الأكاديمية. pptx
 
sass session by ali ramadan to themifiiy
sass session by ali ramadan to themifiiysass session by ali ramadan to themifiiy
sass session by ali ramadan to themifiiy
 
تطبيقات الذكاء الاصطناعي و استخداماتها في العلوم البيولوجية والطبية
تطبيقات الذكاء الاصطناعي و استخداماتها   في العلوم البيولوجية والطبيةتطبيقات الذكاء الاصطناعي و استخداماتها   في العلوم البيولوجية والطبية
تطبيقات الذكاء الاصطناعي و استخداماتها في العلوم البيولوجية والطبية
 
الترادف بين اللغة العربية والإنجليزية.pptx
الترادف بين اللغة العربية والإنجليزية.pptxالترادف بين اللغة العربية والإنجليزية.pptx
الترادف بين اللغة العربية والإنجليزية.pptx
 
إعادة الإعمار-- غزة فلسطين سوريا العراق
إعادة الإعمار--  غزة  فلسطين سوريا العراقإعادة الإعمار--  غزة  فلسطين سوريا العراق
إعادة الإعمار-- غزة فلسطين سوريا العراق
 
تهيئة ممتعة استراتيجية شريط الذكريات.pptx
تهيئة ممتعة استراتيجية شريط الذكريات.pptxتهيئة ممتعة استراتيجية شريط الذكريات.pptx
تهيئة ممتعة استراتيجية شريط الذكريات.pptx
 
الصف الثاني الاعدادي -علوم -الموجات .pptx
الصف الثاني الاعدادي -علوم -الموجات .pptxالصف الثاني الاعدادي -علوم -الموجات .pptx
الصف الثاني الاعدادي -علوم -الموجات .pptx
 

Navigation

  • 1. ‫املعلوماتية‬ ‫اهلندسة‬ ‫كلية‬ ‫اخلامسة‬ ‫السنة‬ ‫والنظم‬ ‫الشبكات‬ ‫قسمي‬ ‫لطالب‬‫و‬‫الربجميات‬ ‫هندسة‬ ‫محص‬-‫سوريا‬ ‫االلكرتونية‬ ‫التجارة‬ ‫مقرر‬ ‫د‬.‫خلوف‬ ‫زينب‬ ‫احملاضرة‬‫اخلامسة‬ ‫التنقل‬‫بني‬‫الصفحات‬ JSF: Page Navigation ‫أنواع‬‫التنقل‬‫بني‬‫الصفحات‬‫يف‬JSF ‫يت‬ ‫أن‬ ‫ميكن‬ ‫الصفحات‬ ‫بني‬ ‫التنقل‬‫صريح‬ ‫بشكل‬ ‫أو‬ ‫ضمين‬ ‫بشكل‬ ‫م‬. 1.‫تنقل‬‫ضمين‬‫إىل‬‫الصفحات‬:‫ويتم‬‫يف‬‫هذه‬‫يقة‬‫ر‬‫الط‬‫حتديد‬‫الصفحة‬‫اليت‬‫سيتم‬‫اإلنتقال‬‫إليها‬‫من‬‫خالل‬‫النتيجة‬‫اليت‬ ‫تعيدها‬‫يقة‬‫ر‬‫الط‬Action Method‫من‬Managed Bean.‫حيث‬‫أن‬‫النتيجة‬‫اليت‬‫يتم‬‫إعادهتا‬‫متثل‬‫إسم‬ ‫الصفحة‬‫اليت‬‫سيتم‬‫اإلنتقال‬‫إليها‬‫علما‬‫أن‬‫ه‬‫ليس‬‫بالضرورة‬‫أن‬‫تكون‬‫هذه‬‫النتيجة‬‫سلسلة‬‫حمارف‬‫بل‬‫ميكن‬‫أن‬‫تكون‬ ‫قيمة‬‫عددية‬.‫يف‬‫املثال‬(1)،‫عندما‬‫تتم‬‫إعادة‬‫سلسلة‬‫احملارف‬"success"‫يتم‬‫اإلنتقال‬‫إىل‬‫الصفحة‬ success.xhtml‫وعندما‬‫تعاد‬‫سلسلة‬‫احملارف‬"index"‫يتم‬‫اإلنتقال‬‫إىل‬‫الصفحة‬index.xhtml.‫ويف‬ ‫املثال‬(2)‫عندما‬‫إعادة‬ ‫تتم‬1‫اإل‬ ‫يتم‬‫نتقال‬‫إ‬‫الصفحة‬ ‫ىل‬1.xhtml‫وعندما‬‫يعاد‬2‫الصفحة‬ ‫إىل‬ ‫اإلنتقال‬ ‫يتم‬ 2.xhtml. public int guessCommand () { if (guess == target) { return (1); } else { this.attempts++; return (2); } } public String guessCommand () { if (guess == target) { return ("success"); } else { this.attempts++; return ("index"); } } ‫املثال‬2‫املثال‬1 2.‫التنقل‬‫الصريح‬‫إىل‬‫الصفحات‬:‫يف‬‫هذه‬‫يقة‬‫ر‬‫الط‬‫تتم‬‫إضافة‬‫اعد‬‫و‬‫ق‬‫التنقل‬‫بشكل‬‫يح‬‫ر‬‫ص‬‫إىل‬‫ملف‬‫يفات‬‫ر‬‫التع‬faces- config.xml،‫هذه‬‫اعد‬‫و‬‫الق‬‫حتدد‬‫بشكل‬‫يح‬‫ر‬‫ص‬‫الصفحة‬‫اليت‬‫سيتم‬‫اإلنتقال‬‫إليها‬‫من‬‫أجل‬‫نتيجة‬‫معينة‬. ‫مالحظة‬: ‫باإل‬ ‫يسمى‬ ‫االنتقال‬ ‫أنواع‬ ‫من‬ ‫نوع‬ ‫ويوجد‬‫الثاب‬ ‫نتقال‬Static Navigation‫اليت‬ ‫الصفحة‬ ‫إسم‬ ‫وضع‬ ‫خالل‬ ‫من‬ ‫ويتم‬ ‫خاصية‬ ‫يف‬ ‫إليها‬ ‫اإلنتقال‬ ‫يراد‬Action‫األوامر‬ ‫لزر‬: <h:commandButton ... action="fixed-page/">
  • 2. ‫املثال‬ ‫يف‬ ‫كما‬: <h:commandButton ... action="/view/result-page-1.xhtml/"> ‫ال‬ ‫املسار‬ ‫حتديد‬ ‫جيب‬ ‫حيث‬‫للصفحة‬ ‫صحيح‬. ‫التنقل‬‫الصريح‬‫إىل‬‫الصفحات‬ Explicit Page Navigation ‫التنقل‬‫يح‬‫ر‬‫الص‬‫بني‬‫الصفحات‬‫يتم‬‫امللف‬ ‫يف‬ ‫التنقل‬ ‫اعد‬‫و‬‫ق‬ ‫يف‬‫ر‬‫تع‬ ‫خالل‬ ‫من‬faces-config.xml‫يف‬ ،Netbeans‫يتم‬ ‫امللف‬ ‫إنشاء‬faces-config.xml‫للشكل‬ ً‫ا‬‫وفق‬: ‫اضي‬‫رت‬‫إف‬ ‫بشكل‬ ‫ليتوضع‬‫اجمللد‬ ‫ضمن‬WEB-INF‫كم‬‫الشكل‬ ‫يف‬ ‫امبني‬: ‫العام‬ ‫الشكل‬‫للملف‬faces-config.xml‫الشكل‬ ‫يف‬ ‫مبني‬: ‫العنصر‬<faces-config>‫ميثل‬‫جذر‬‫ملف‬‫ـ‬‫ل‬‫ا‬xml‫ويتضمن‬‫مجيع‬‫يفات‬‫ر‬‫التع‬‫اخلاصة‬‫بالتطبيق‬‫غري‬‫تلك‬‫املعرفة‬‫يف‬‫ملف‬ ‫موصف‬‫إستخدام‬‫التطبيق‬(web.xml)Web Deployment Descriptor.‫كل‬‫العناصر‬‫يف‬‫امللف‬faces- config.xml‫مثل‬(application, managed-bean, ..., factory)‫هي‬‫ية‬‫ر‬‫إختيا‬‫ميكن‬‫و‬‫أن‬‫يتضمن‬‫امللف‬ ‫احد‬‫و‬‫أو‬‫أكثر‬‫من‬‫هذه‬‫العناصر‬.‫التنقل‬ ‫اعد‬‫و‬‫ق‬ ‫يف‬‫ر‬‫تع‬ ‫كيفية‬‫على‬ ‫كز‬‫سنر‬ ‫احملاضرة‬ ‫هذه‬ ‫يف‬. ‫ملف‬ ‫عن‬ ‫مثال‬faces-config.xml‫الصفح‬ ‫بني‬ ‫التنقل‬ ‫يف‬‫ر‬‫لتع‬ ‫اعد‬‫و‬‫الق‬ ‫من‬ ‫جمموعة‬ ‫يتضمن‬‫ات‬:
  • 3. faces-config.xml 1 <?xml version="1.0"?> 2 <faces-config xmlns="http://java.sun.com/xml/ns/javaee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 5 http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd" 6 version="2.0"> 7 8 <navigation-rule> 9 <from-view-id>/start-page.xhtml</from-view-id> 10 <navigation-case> 11 <from-outcome>too-short</from-outcome> 12 <to-view-id>error-message.xhtml</to-view-id> 13 </navigation-case> 14 </navigation-rule> 15 <navigation-rule> 16 <from-view-id>/start-page.xhtml</from-view-id> 17 <navigation-case> 18 <from-outcome>page1</from-outcome> 19 <to-view-id>result-page-1.xhtml</to-view-id> 20 </navigation-case> 21 <navigation-case> 22 <from-outcome>page2</from-outcome> 23 <to-view-id>result-page-2.xhtml</to-view-id> 24 </navigation-case> 25 </navigation-rule> 26 </faces-config> 27 ‫اعد‬‫و‬‫ق‬‫التنقل‬(Navigation Rules)‫امللف‬ ‫يف‬faces-config.xml ‫العنصر‬<navigation-rule>‫أكثرهم‬ ‫من‬ ، ‫األبناء‬ ‫العناصر‬ ‫من‬ ‫عدد‬ ‫العنصر‬ ‫هلذا‬ ‫يكون‬ ‫أن‬ ‫ميكن‬ ، ‫قاعدة‬ ‫يعرف‬ ً‫ا‬‫استخدام‬: CHILD ELEMENTMULTIPLICITYDESCRIPTION
  • 4. from-view-idzero or one‫تطبق‬ ‫اليت‬ ‫الصفحة‬ ‫حتدد‬‫يكن‬ ‫مل‬ ‫إذا‬ ، ‫القاعدة‬ ‫عليها‬ ‫الصفحات‬ ‫كل‬‫على‬ ‫تطبق‬ ‫فالقاعدة‬ ‫موجود‬ ‫العنصر‬ ‫هذا‬. navigation-casezero to many‫حتقق‬ ‫إذا‬ ‫إليها‬ ‫اإلنتقال‬ ‫سيتم‬ ‫اليت‬ ‫التالية‬ ‫الصفحة‬ ‫حيدد‬ ‫معني‬ ‫ج‬‫خر‬ ‫أو‬ ‫شرط‬. ‫مالحظة‬:‫عنصر‬ ‫أي‬ ‫التتضمن‬ ‫قد‬ ‫القاعدة‬ ‫أن‬ ‫السابق‬ ‫اجلدول‬ ‫من‬ ‫املالحظ‬ ‫من‬navigation-case‫أخطاء‬ ‫اليعطي‬ ‫هذا‬ ، ‫ـ‬‫ل‬ ‫نتيجة‬ ‫هناك‬ ‫كان‬‫ان‬ ‫خطأ‬ ‫حيصل‬ ‫ولكن‬ ‫بالتنفيذ‬Action Method‫حالة‬ ‫واليوجد‬navigation-case‫هلذه‬ ‫افقة‬‫و‬‫م‬ ‫النتيجة‬. ‫للعنصر‬<navigation-case>ً‫ا‬‫استخدام‬ ‫أكثرها‬ ‫ومن‬ ‫أبناء‬ ‫عناصر‬ ً‫ا‬‫أيض‬. CHILD ELEMENTMULTIPLICITYDESCRIPTION from-outcomezero or one‫مثل‬ ‫ج‬‫خر‬ ‫تعرف‬"success"‫أو‬"failure"‫ـ‬‫ل‬ Action Method to-view-idexactly one‫حتققت‬ ‫إذا‬ ‫إليها‬ ‫االنتقال‬ ‫سيتم‬ ‫اليت‬ ‫التالية‬ ‫الصفحة‬ ‫تعرف‬ ‫احلالة‬ ‫هذه‬. from-actionzero or one‫هذه‬ ‫تطبيق‬ ‫يتم‬ ‫حىت‬ ‫يتنفذ‬ ‫أن‬ ‫جيب‬ ‫تعبري‬ ‫على‬ ‫تدل‬ ‫قيمة‬ ‫القاعدة‬. redirectzero or one‫ـ‬‫ب‬ ‫فة‬‫ر‬‫املع‬ ‫للصفحة‬ ‫اإلنتقال‬ ‫أن‬ ‫حيدد‬to-view-id‫جيب‬ ‫ـ‬‫ل‬ ً‫ا‬‫وفق‬ ‫يتم‬ ‫أن‬HTTP redirect. ‫مساوئ‬‫وحماسن‬‫التنقل‬‫الصريح‬‫للصفحات‬:‫بتخصيص‬ ‫يسمح‬ ‫الصريح‬ ‫التنقل‬ ‫ولكن‬ ‫أبسط‬ ‫يكون‬ ‫قد‬ ‫الضمين‬ ‫اإلنتقال‬ ‫أكرب‬ ‫مرونة‬ ‫يعطي‬ ‫هذا‬ ، ‫جافا‬ ‫ملفات‬ ‫يف‬ ‫البحث‬ ‫بدل‬ ‫التنقل‬ ‫لقواعد‬ ‫واحد‬ ‫مكان‬‫الشروط‬ ‫إسناد‬ ‫ميكن‬ ‫أنه‬ ‫حيث‬ ‫من‬ ‫إستخدام‬ ‫وميكن‬ ‫الحقا‬ ‫خمتلفة‬ ‫لصفحات‬wildcards‫الشرطي‬ ‫التنقل‬ ‫إستخدام‬ ‫أو‬ ‫البدء‬ ‫لصفحات‬. ‫مثال‬‫عن‬‫التنقل‬‫الصريح‬‫بني‬‫الصفحات‬( :http://www.coreservlets.com/JSF-Tutorial/jsf2/) ‫يف‬‫هذا‬‫املثال‬‫صفحة‬ ،‫البداية‬start-page-1.xhtml،‫تتضمن‬‫كونة‬ُ‫م‬‫إلدخال‬‫نص‬inputText‫وزر‬‫امر‬‫و‬‫أ‬ commandButton.‫إذا‬‫أدخل‬‫املستخدم‬‫رسالة‬‫مكونة‬‫من‬‫حمرف‬‫أكثر‬ ‫أو‬ ‫ني‬‫يتم‬‫بشكل‬‫ائي‬‫و‬‫عش‬‫إخ‬‫ت‬‫يار‬‫صفحة‬‫لإلنتقال‬ ‫إليها‬‫ويتم‬‫فيها‬‫عرض‬‫الرسالة‬‫املدخلة‬‫وإال‬‫يتم‬ ‫فإنه‬‫اإلنتقا‬‫ل‬‫لصفحة‬‫تعرض‬‫رسالة‬‫خطأ‬. ‫من‬ ‫مكون‬ ‫التطبيق‬Managed Bean‫هو‬SimpleController.java: SimpleController.java 1 package coreservlets; 2
  • 5. 3 import java.io.Serializable; 4 import javax.enterprise.context.RequestScoped; 5 import javax.inject.Named; 6 @RequestScoped 7 @Named 8 public class SimpleController { 9 private String message=""; 10 11 public String getMessage() { 12 return(message); 13 } 14 15 public void setMessage(String message) { 16 this.message = message; 17 } 18 19 public String doNavigation() { 20 if (message.trim().length() < 2) { 21 return("too-short"); 22 } else { 23 String[] results = 24 { "page1", "page2" }; 25 return(RandomUtils.randomElement(results)); 26 } 27 } 28 } 29 ‫الصف‬RandomUtils.java‫ائي‬‫و‬‫عش‬ ‫بشكل‬ ‫صف‬ ‫من‬ ‫عنصر‬ ‫باختيار‬ ‫يسمح‬ ‫مساعد‬ ‫صف‬ ‫هو‬. RandomUtils.java 1 package coreservlets; 2 3 import java.util.Random; 4 5 public class RandomUtils { 6 private static Random r = new Random();
  • 6. 7 8 public static int randomInt(int range) { 9 return(r.nextInt(range)); 10 } 11 12 public static int randomIndex(Object[] array) { 13 return(randomInt(array.length)); 14 } 15 16 public static <T> T randomElement(T[] array) { 17 return(array[randomIndex(array)]); 18 } 19 } 20 ‫صفحات‬ ‫من‬ ‫جمموعة‬ ‫من‬ ‫التطبيق‬ ‫يتألف‬ ‫كذلك‬‫و‬JSF‫الصفحات‬ ‫هلذه‬ ‫عرض‬ ‫يلي‬ ‫فيم‬ ،. ‫الصفحة‬start-page.xhtml start-page.xhtml 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml" 4 xmlns:h="http://java.sun.com/jsf/html"> 5 <h:head><title>JSF 2.0: Basic Navigation Rules</title> 6 <link href="./css/styles.css" 7 rel="stylesheet" type="text/css"/> 8 </h:head> 9 <h:body> 10 <div align="center"> 11 <table border="5"> 12 <tr><th class="title">JSF 2.0: Basic Navigation Rules</th></tr> 13 </table> 14 <p/> 15 <h:form> 16 Your message: 17 <h:inputText value="#{simpleController.message}"/> 18 <br/>
  • 7. 19 <h:commandButton value="Show Results" 20 action="#{simpleController.doNavigation}"/> 21 </h:form> 22 </div> 23 </h:body> 24 </html> 25 ‫الصفحة‬result-page-1.xhtml result-page-1.xhtml 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml" 4 xmlns:h="http://java.sun.com/jsf/html"> 5 <h:head><title>Result Page 1</title> 6 <link href="./css/styles.css" 7 rel="stylesheet" type="text/css"/> 8 </h:head> 9 <h:body> 10 <div align="center"> 11 <table border="5"> 12 <tr><th class="title">Result Page 1</th></tr> 13 </table> 14 <p/> 15 16 <h2>Your message: "#{simpleController.message}"</h2> 17 18 </div></h:body></html> 19 ‫الصفحة‬result-page-2.xhtml result-page-2.xhtml
  • 8. 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml" 4 xmlns:h="http://java.sun.com/jsf/html"> 5 <h:head><title>Result Page 2</title> 6 <link href="./css/styles.css" 7 rel="stylesheet" type="text/css"/> 8 </h:head> 9 <h:body> 10 <div align="center"> 11 <table border="5"> 12 <tr><th class="title">Result Page 2</th></tr> 13 </table> 14 <p/> 15 16 <h2>Your message: "#{simpleController.message}"</h2> 17 18 </div></h:body></html> 19 ‫الصفحة‬error-message.xhtml error-message.xhtml 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml" 4 xmlns:h="http://java.sun.com/jsf/html"> 5 <h:head><title>Error: Message Too Short</title> 6 <link href="./css/styles.css" 7 rel="stylesheet" type="text/css"/> 8 </h:head> 9 <h:body> 10 <div align="center"> 11 <table border="5"> 12 <tr><th class="title">Error: Message Too Short</th></tr> 13 </table> 14 <p/>
  • 9. 15 16 <h2>Short message.</h2> 17 18 </div></h:body></html> 19 ‫امللف‬faces-config.xml faces-config.xml 1 <?xml version="1.0"?> 2 <faces-config xmlns="http://java.sun.com/xml/ns/javaee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 5 http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd" 6 version="2.0"> 7 8 <navigation-rule> 9 <from-view-id>/start-page.xhtml</from-view-id> 10 <navigation-case> 11 <from-outcome>too-short</from-outcome> 12 <to-view-id>error-message.xhtml</to-view-id> 13 </navigation-case> 14 </navigation-rule> 15 <navigation-rule> 16 <from-view-id>/start-page.xhtml</from-view-id> 17 <navigation-case> 18 <from-outcome>page1</from-outcome> 19 <to-view-id>result-page-1.xhtml</to-view-id> 20 </navigation-case> 21 <navigation-case> 22 <from-outcome>page2</from-outcome> 23 <to-view-id>result-page-2.xhtml</to-view-id> 24 </navigation-case> 25 </navigation-rule> 26 </faces-config> 27
  • 10. ‫إستخدام‬from-action ‫املثال‬ ‫يف‬ ‫كما‬، ‫النتيجة‬ ‫نفس‬ ‫خمتلفتني‬ ‫يقتني‬‫ر‬‫ط‬ ‫تعيد‬ ‫قد‬ ‫األحيان‬ ‫بعض‬ ‫يف‬: package bean; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; @ManagedBean @SessionScoped public class PageController { public String processPage1() { return "success"; } public String processPage2() { return "success"; } } ‫نستخدم‬ ‫احلالة‬ ‫هذه‬ ‫يف‬from-action‫االنتقال‬ ‫حاليت‬ ‫بني‬ ‫للتميز‬. <?xml version='1.0' encoding='UTF-8'?> <faces-config version="2.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"> <navigation-rule> <from-view-id>index.xhtml</from-view-id> <navigation-case> <from-action>#{pageController.processPage1}</from-action> <from-outcome>success</from-outcome> <to-view-id>page1.xhtml</to-view-id> </navigation-case> <navigation-case> <from-action>#{pageController.processPage2}</from-action> <from-outcome>success</from-outcome> <to-view-id>page2.xhtml</to-view-id> </navigation-case> </navigation-rule> </faces-config> ‫البدل‬ ‫حمرف‬ ‫استخدام‬*‫اعد‬‫و‬‫الق‬ ‫يف‬ ‫يف‬ ‫الصفحة‬ ‫اسم‬ ‫بدل‬ ‫اعد‬‫و‬‫الق‬ ‫يف‬ ‫البدل‬ ‫حمرف‬ ‫استخدام‬ ‫املمكن‬ ‫من‬<from-view-id>‫التايل‬ ‫املثال‬ ‫يف‬ ‫كما‬: <navigation-rule>
  • 11. <from-view-id>*</from-view-id> <navigation-case> <from-outcome>too-short</from-outcome> <to-view-id>/view/error-message.xhtml</to-view-id> </navigation-case> </navigation-rule> ‫بداية‬ ‫صفحة‬ ‫أي‬ ‫أجل‬ ‫من‬ ‫تتحقق‬ ‫القاعدة‬ ‫هذد‬ ‫أن‬ ‫أي‬<from-view-id>. ‫الشرطي‬ ‫اإلنتقال‬ ‫قواعد‬Conditional Navigation Rules ‫الومسة‬ ‫استخدام‬ ‫خالل‬ ‫من‬ ‫شرطية‬ ‫انتقال‬ ‫اعد‬‫و‬‫ق‬ ‫يف‬‫ر‬‫تع‬ ‫املمكن‬ ‫من‬<if>‫التايل‬ ‫املثال‬ ‫يف‬ ‫كما‬،: <navigation-case> <from-outcome>success</from-outcome> <if>#{user.newVisitor}</if> <to-view-id>/welcome-new.xhtml</to-view-id> </navigation-case> <navigation-case> <from-outcome>success</from-outcome> <if>#{!user.newVisitor}</if> <to-view-id>/welcome-back.xhtml</to-view-id> </navigation-case> ‫النتيجة‬ ‫كانت‬‫إذا‬ ‫األوىل‬ ‫احلالة‬ ‫يف‬success‫و‬#{user.newVisitor}‫أن‬ ‫حيث‬ ‫صحيحة‬user‫هو‬ ManagedBean‫و‬newVisitor‫ـ‬‫ل‬ ‫منطقي‬ ‫نوع‬ ‫من‬ ‫خلاصية‬ ‫اسم‬user. ‫ديناميكي‬ ‫بشكل‬ ‫إليها‬ ‫اإلنتقال‬ ‫سيتم‬ ‫اليت‬ ‫الصفحة‬ ‫إسم‬ ‫حتديد‬ ‫إمكانية‬Dynamic To-Ids ‫ل‬‫و‬‫الت‬ ‫ملف‬ ‫يف‬ ‫ديناميكي‬ ‫بشكل‬ ‫إليها‬ ‫اإلنتقال‬ ‫سيتم‬ ‫اليت‬ ‫الصفحة‬ ‫حساب‬ ‫املمكن‬ ‫من‬‫يف‬facse-config.xml‫من‬ ‫بدل‬ ، ‫إعادة‬ ‫كنتيجة‬‫مباشر‬ ‫غري‬ ‫بشكل‬ ‫الصفحة‬ ‫إسم‬ ‫حتديد‬ ‫يتم‬ ‫أن‬.‫الصفحة‬ ‫من‬ ‫االنتقال‬ ‫سيتم‬ ‫التايل‬ ‫املثال‬ ‫يف‬/exam- question.xhtml‫التعبري‬ ‫تنفيذ‬ ‫من‬ ‫الناتج‬ ‫اإلسم‬ ‫ذات‬ ‫الصفحة‬ ‫إىل‬#{exam.nextQuestionPage} <from-view-id>/exam-question.xhtml</from-view-id> <navigation-case> <to-view-id>#{exam.nextQuestionPage}.xhtml</to-view-id> </navigation-case>
  • 12. ‫بني‬ ‫الفرق‬Page Forward vs Page Redirect ‫الصفحة‬ ‫توجيه‬ ‫إستخدام‬ ‫عند‬Page Forward‫ـ‬‫ل‬‫ا‬ ‫تغيري‬ ‫اليتم‬URL‫اجلد‬ ‫الصفحة‬ ‫إىل‬ ‫االنتقال‬ ‫عند‬‫يدة‬.‫إستخدام‬ ‫عند‬ ‫أما‬ ‫التوجيه‬ ‫إعادة‬redirectionPage‫ـ‬‫ل‬‫ا‬ ‫تغيري‬ ‫يتم‬URL‫اجلديدة‬ ‫الصفحة‬ ‫إىل‬ ‫اإلنتقال‬ ‫عند‬. ‫يوجد‬ ‫عملي‬ ‫بشكل‬ ‫التوجيه‬ ‫إعاد‬ ‫لتحقيق‬‫طرق‬ ‫عدة‬: ‫األوىل‬ ‫يقة‬‫ر‬‫الط‬‫اخلاصية‬ ‫خالل‬ ‫من‬ ‫ثابت‬ ‫بشكل‬Action‫للزر‬: <h:form> <h:commandButton action="page1?faces-redirect=true" value="Page1" /> </h:form> ‫الثانية‬ ‫يقة‬‫ر‬‫الط‬‫ال‬ ‫تعيدها‬ ‫اليت‬ ‫القيمة‬ ‫خالل‬ ‫من‬Action Method: public String sayHello() {
  • 13. if (age < 11) { helloText = "Hello " + name + "!"; } else { helloText = "Good Morning " + name + "!"; } return ("home?faces-redirect=true"); } ‫يقة‬‫ر‬‫الط‬‫الثالثة‬‫الومسة‬ ‫استخدام‬ ‫خالل‬ ‫من‬<redirect />‫ضمن‬<navigation-case /> <navigation-rule> <from-view-id>start.xhtml</from-view-id> <navigation-case> <from-outcome>page1</from-outcome> <to-view-id>page1.xhtml</to-view-id> <redirect /> </navigation-case> </navigation-rule> ‫احملاضرة‬ ‫اجع‬‫ر‬‫م‬ 1. The Java EE 6 Tutorial. http://download.oracle.com/javaee/6/tutorial/doc/javaeetutorial6.pdf 2. JSF 2.0: Explicit Page Navigation and faces-con_g.xml, available from:http://www.coreservlets.com/JSF-Tutorial/jsf2/ 3. Mastering JavaServer Faces, by Bill Dudney, Jonathan Lehr, Bill Willis, and LeRoy Mattingly. 4. JSF 2.0 lecture notes by Dr. Beatrice Amrhein, available from: http://sws.bfh.ch/~amrhein/ 5. JSF 2.0 Tutorial, available from: http://www.mkyong.com/jsf2/