• 0
العيافـي

بدايتي مع richfaces في JSF خطوه بخطوة

سؤال

السلام عليكم ورحمة الله وبركاته

أولا أحب أن أبين بان هذه تجربتي الأولى مع richfaces

فهنا سأطرح تجربتي معها و المشاكل التي واجهتني و كيف قمت بمعالجتها.

كما اني ان شاء الله ساقوم بانشاء مشروع صغير كتطبيق للتجربة.

الخطوات

  1. الادوات المستخدمة
  2. انشاء المشروع
  3. معالجة المشاكل
  4. الشروع في التطبيق

الأدوات المستخدمة

  • JBoss_ 4.2.4.GA
  • eclipse-galileo
  • الاضافة RichFaces-VPE-win32-3.1.0.v201003050540R-H56-GA لل eclipse

هذه الإضافة توفر مكونات مرئية لل JSF & richfaces كما هي موضحة في الصورة التالية

post-82434-12716189101372_thumb.gif

2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

10 إجابة على هذا السؤال .

  • 0

2 - انشاء المشروع

قمت بإنشاء مشروع جديد أسميته FirstRF

post-82434-12716196137643_thumb.gif

post-82434-12716196583244_thumb.gif

post-82434-12716197056844_thumb.gif

بعد أن أنشأة المشروع قمت بإضافة JSF بالطريقة التالية

post-82434-12716198276024_thumb.gif

post-82434-12716198730171_thumb.gif

بعد ذلك قمت بربط الويب بال EJB

post-82434-1271619948856_thumb.gif

تكملة لانشاء المشروع

قمت بالتعديل على ملف web.xml ليكون


<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5"
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-app_2_5.xsd">
<display-name>FirstRFWeb</display-name>
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
</context-param>
<context-param>
<param-name>org.ajax4jsf.SKIN</param-name>
<param-value>classic</param-value>
</context-param>
<context-param>
<param-name>org.ajax4jsf.COMPRESS_SCRIPT</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>org.ajax4jsf.COMPRESS_STYLE</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>org.ajax4jsf.xmlparser.ORDER</param-name>
<param-value>NEKO, TIDY</param-value>
</context-param>
<context-param>
<param-name>org.richfaces.CONTROL_SKINNING</param-name>
<param-value>enable</param-value>
</context-param>
<context-param>
<param-name>org.richfaces.LoadStyleStrategy</param-name>
<param-value>ALL</param-value>
</context-param>
<context-param>
<param-name>org.richfaces.LoadScriptStrategy</param-name>
<param-value>ALL</param-value>
</context-param>
<context-param>
<param-name>javax.faces.DISABLE_FACELET_JSF_VIEWHANDLER</param-name>
<param-value>true</param-value>
</context-param>

<filter>
<display-name>Ajax4jsf Filter</display-name>
<filter-name>ajax4jsf</filter-name>
<filter-class>org.ajax4jsf.Filter</filter-class>
</filter>
<filter-mapping>
<filter-name>ajax4jsf</filter-name>
<servlet-name>Faces Servlet</servlet-name>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>
<!-- Faces Servlet -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Faces Servlet Mapping -->
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
</web-app>

قمت باضافة ملفات الجار الناقصة كما اضفت الملفات الخاصة بال richfaces

post-82434-12716203140453_thumb.gif

2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

من أين يمكنني الحصول على هذه الإضافة؟؟

RichFaces-VPE-win32-3.1.0.v201003050540R-H56-GA

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

3 - معالجة المشاكل

1 - حدث معي الاستثناء التالي الذي تسبب في فشل عملية deploy


17:22:59,155 ERROR [[/FirstRFWeb]] Exception sending context initialized event to listener instance of class org.jboss.web.jsf.integration.config.JBossJSFConfigureListener
java.lang.ClassCastException: com.sun.faces.config.WebConfiguration cannot be cast to com.sun.faces.config.WebConfiguration
at com.sun.faces.config.WebConfiguration.getInstance(WebConfiguration.java:135)
at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:228)
at org.jboss.web.jsf.integration.config.JBossJSFConfigureListener.contextInitialized(JBossJSFConfigureListener.java:69)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3856)
at org.apache.catalin
.
.

طريقة معالجة هذا الاستثناء

في الملف web.xml الموجود في JBoss على المسار

[jboss]\server\default\deployers\jbossweb.deployer\conf\web.xml 

قمت بتعطيل الامرين التاليين


1

<listener>
<listener-class>org.jboss.web.jsf.integration.config.JBossJSFConfigureListener</listener-class>
</listener>


2

<listener>
<listener-class>com.sun.faces.application.WebappLifecycleListener</listener-class>
</listener>

___________________

2 - حدث معي الاستثناء التالي، مع بحثتي في النت اتضح بان هذا الاستثناء يحدث اذا كان نظام التشغيل وندوز و اللغة الافتراضية للنظام هي اللغة العربية


java.lang.IllegalArgumentException: Parameter "size" for convert from HTML to java can not be decoded: [11px], reason: Unparseable number: "11px"
at org.ajax4jsf.util.HtmlDimensions.decode(HtmlDimensions.java:45)
.
.
.

وعالجة المشكلة بان عدة كتابة الصنف HtmlDimensions بنفس اسم الحزمة (كحل سريع)

الكود المضاف


if(size.equalsIgnoreCase("11px")){
return new Double(11);
}

الصنف الجديد


package org.ajax4jsf.util;

import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.regex.Pattern;

import org.ajax4jsf.Messages;

public class HtmlDimensions
{
private static final Pattern PATTERN_NUMERIC = Pattern.compile("^[+-]?\\d+(\\.\\d+)?$");
private static final Pattern PATTERN_PX = Pattern.compile("^[+-]?\\d+(\\.\\d+)?px$");
private static final Pattern PATTERN_PCT = Pattern.compile("^[+-]?\\d+(\\.\\d+)?%$");

private static final NumberFormat numericFormat = new DecimalFormat();
private static final DecimalFormat pxFormat = new DecimalFormat();
private static final NumberFormat pctFormat = NumberFormat.getPercentInstance();

public static Double decode(String size)
{
double d = 0.0D;
try {
if (size != null){
if(size.equalsIgnoreCase("11px")){
return new Double(11);
}
if (PATTERN_NUMERIC.matcher(size).matches())
synchronized (numericFormat) {
d = numericFormat.parse(size).doubleValue();
}
else if (PATTERN_PX.matcher(size).matches())
synchronized (pxFormat) {
d = pxFormat.parse(size).doubleValue();
}
else if (PATTERN_PCT.matcher(size).matches())
synchronized (pctFormat) {
d = pctFormat.parse(size).doubleValue();
}
}
}
catch (ParseException e)
{
throw new IllegalArgumentException(Messages.getMessage("DECODE_PARAMETER_ERROR", new Object[] { "size", size, e.getMessage() }));
}
return new Double(d);
}

public static String formatPx(Double value) {
return value.intValue() + "px"; }

public static String formatPct(Double value) {
String v = "";
synchronized (pctFormat) {
v = pctFormat.format(value.doubleValue());
}
return v;
}

static
{
pxFormat.setPositiveSuffix("px");
pxFormat.setNegativeSuffix("px");
}
}

تم تعديل بواسطه العيافـي
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

عزيزي علاء تجد RichFaces-VPE

على الرابط التالي

http://downloads.sourceforge.net/jboss/RichFaces-VPE-win32-3.1.0.v201003050540R-H56-GA.zip

تم تعديل بواسطه العيافـي
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

4 - الشروع في التطبيق

قاعدة البيانات

سيكون اسمها rich

وتحتوي على جدول واحد باسم student و يحتوي هذا الجدول على (id, name, password, email, note)

ولتقليل الوقت استخدمت هذه الاداء DAOGenerator_0.1.0.rar لانشاء الحزم التالية

1 - الحزمة Beans و تحتوي على كائن يمثل الجدول في قاعدة البيانات.

2- الحزمة DAO و تحتوي كود الاتصال بقاعدة البيانات ، و بها 5 طرق (اضافة ‘ تعديل ، حذف، اسعلام عن الكل، استعلام بشرط)

3- الحزمة EJB من اسمها وتحتوي على ejb حيت يمكنني الوصول الى الاوامر الموجوده في DOA من خلالها

4 - الحزمة Delegate وهي عبارة عن عميل لل EJB وتكون موجوده في الويب Web

كود قاعدة البيانات


CREATE TABLE `student` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) collate utf8_unicode_ci NOT NULL,
`password` varchar(50) collate utf8_unicode_ci NOT NULL,
`email` varchar(200) collate utf8_unicode_ci NOT NULL,
`note` varchar(250) collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;

الويب

سيكون عبارة عن 4 صفحات JSP

1 - اضافة طالب

2- عرض بيانات طالب

3- التعديل على بيانات طالب

4- عرض قائمة بالطلاب

اضافات

1- اضافة رسالة بعد تنفيذ عمليه سواء كانت نجاح العملية او فشلها

2- اضافة واجهه عربية و انجليزية

3- اضافة التحقق من البيانات المدخلة (من جهة السيرفر)

4- استخدام بعض الادوات الموجودة في richfaces في صفحات اضافية بهدف التجربة.

يتبع....

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مجهود رائع, بارك الله فيك,

بالمناسبه, ال plug-in الذي يدعي JBoss Tools أعتقد أنه به هذه الإضافة من ضمن مجموعه هائله من الإضافات

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اعتذر عن التأخير ...

شكرا اخي هويدي على المداخله ..

المرفق يحتوي على التطبيق بصيغة ear يحتوي على الصفحات المذكورة سابق، علما بان ملفات الجار محذوفة بسبب كبر حجمها، ولمعرفة ملفات الجار المستخدمة اضفت الصوره التالية

post-82434-12718901244805_thumb.gif

صورة للصفحات المصممة

post-82434-12718895787309_thumb.gif

ساقوم باضافة بعض المكونات في المستقبل القريب ان شاء الله تعالى....

FirstRF.rar

تم تعديل بواسطه العيافـي
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

جزاك الله خيراً على الشرح لكن عندي سؤال

هل يمكن إستعمال MYEclipse عوض ECLIPSE و إدا كان ممكن كيف أعمل

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

لا اعتقد ان هناك فرق....

اسحف الملفات التي تهمك فقط ..

مثل :

ملفات jar الموجوده في المجلد lib

ملفات xml الموجوده في المجلد WEB-INF

بالنسبة لتجربتي مع richfaces اتضح لي بانها تحتاج الى تعديل ملفات CSS لعدم توافقها التام مع الواجهه العربية (من اليمين الى اليسار RTL )

لم اجد وقت لاكمال التجربة ... ولكني سأحاول ان شاء الله تعالى

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم ورحمه الله وبركاته

ده مجهود رائع بس ياريت لو شرح له علي net beans الف شكر

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .