الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[سؤال] تصميم طريقة موحدة لرسم جدول ديناميكي ، jsp/servlets

بدأه Abdullah.Alshammeri في 3 أبريل 2010 · 7 رد · 1,347 مشاهدة · في JavaEE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ..

سؤال آخر .. أتمنى أن تقرؤوه بهدوء .. وبصبر وتؤدة .. فهو طويل و ممل نوعاً ما :-( .

لنفرض أن لدي نظام ما يحتوي على جدول user و message و group و .... في قاعدة البيانات ، وأريد أن أوفر خدمة :

- عرض جميع المستخدمين الموجودين في قاعدة البيانات على شكل جدول ( جدول html عادي ) .

- عمل نفس الشي مع المقالات - الرسائل - وغير ذلك ..

عملت الجدول بالـ html .. بشكل ديناميكي ، في صفحة jsp .. لعرض جميع الرسائل Inbox .. بشكل شبيه بالتالي :

	<% for (int i = 0; i < v.size(); i++)
	{
 	Event e = v.get(i);
 	Group g = e.getGroup();
 	String content = e.getContent();
 	String title = "";
 	String isRead = e.getIsRead();
 	User user = new UserModel().getById(e.getSenderId());
 	if(content!=null ){
 	title = content.substring(0,Math.min(40, content.length()));
 	title = title + "...";
 	}
	%>

	<tr class="head">
 	<td><% if(isRead!= null && isRead.equals("0")){%>
 	<b><%}%>
 	<a href="index.jsp?component=events_center&id=<%=e.getId()%>"><%=title%></a>
 	<%if(isRead != null && isRead.equals("0")){%>
 	</b><%}%>
 	</td>
 	<td><%=user.getDisplayName()%></td>
 	<td><%=e.getSendTime()%></td>
 	<td><%=g.getId()%></td>
 	<td><%=g.getName()%></td>
	</tr>

	<%}%>

النتيجة جدول جميل .

ولكن لاحظت .. أني أقوم بتكرار نفس الشيء مع كل صفحة ، فهناك جدول لعرض المجموعات وآخر لعرض المستخدمين .. وكلها بنفس الأسلوب ، مع اختلاف المحتوى فقط .

لذلك ، ما اريد أن أقوم به هو تصميم شيء ما ، استخدمه ، بدون أن أكرر كتابة الكود في كل مرة .

السؤال /

ماهي أفضل طريقة لتصميم " هذا الشيء " الذي يغنيني عن تكرار الكود في كل مرة ؟

فكرت في أن أعمل كلاس عادي ، اسمه Table مثلاً .. ويبدو بهذا الشكل :

class Table{
void drawTable(Header h,Vector<Row> rows, PrintWriter out)
{
out.print("<table>");
for(...)
out.print("<tr>");
for(..)
out.print("<td>");

}

ثم في صفحة JSP ،

<%
header = createHeader();
Vector vectorOfRows = createRows();
 	Table t = new Table();
 	t.draw(header,vectorOfRows , out);
 	%>

في الحقيقة .. أشعر أن الكود بهذا الشكل غير منظم .. حيث jsp صارت تتدخل في Model .

و صار الكلاس Table للعرض .. بالرغم من أن العرض من المفروض أن يكون من صلاحيات jsp .

أنت كمبرمج .. ماذا ستفعل في هذه الحالة ؟

JSP/ Servlets جننتني ..:wacko: ، لذلك ترى الموضوع مكتوب الساعة 1:30 ليلاً .. بتوقيت مكة ، وأنا على هذا الحال من شهر .. لا أنام الليل بسببها :S

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#2

السلام عليكم.

طالما أنك تتحدث عن تنظيم العرض والنموذج أي الـ MVC فالحل هو باستخدام JSF واستخدام الـ Facelets كـ PDL بدلاً من JSP ،ففيها (Facelets) تجد تحقيق هذا ممكنا وبسهولة باستخدام Templates و Composition. أما إذا لم ترد استخدام Facelets .... فلا حل لدي حالياً(وربما لاحقاً)... :happy:

Facelets fits JSF as a glove

تم تعديل هذه المشاركة بواسطة JDurrah في 3 أبريل 2010 في 02:17

#3

أعتقد أن موضوع custom tag يفي بالغرض

تحياتي

1
حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#4

استخدم DisplayTag

sample_snapshot.png

سهلة الاستخدام ولها العديد من الاضافات مثل

  • تصدير بيانات الجدول الى xml,excel, bdf بدون اضافة اي كود
  • تعدد الصفحات
  • الفرز

عند اضافة المكتبة الى مشروعك فقط بيتوجب عليك ارسال البيانات الى صفحة JSP على ههية ArrayList of Object

هذا مثال بسيط من الموقع عن كيقية تصميم الجدول في JSP

<%
request.setAttribute( "test", new TestList(10, false) );

%>

  <display:table name="test">
    <display:column property="id" title="ID" />
    <display:column property="name" />
    <display:column property="email" />
    <display:column property="status" />
    <display:column property="description" title="Comments" />
  </display:table>

الامثلة

http://displaytag.homeip.net/displaytag-examples-1.2/

اي استفسار انا جاهز .. ان شاء الله تعالى

3
#5
اقتباس
طالما أنك تتحدث عن تنظيم العرض والنموذج أي الـ MVC فالحل هو باستخدام JSF واستخدام الـ Facelets كـ PDL بدلاً من

لا أستخدم JSF ، ولا أظن أن الوقت كافي لدراستها ،

شكراً لك في كل الاحوال : ) .

اقتباس
أعتقد أن موضوع custom tag يفي بالغرض
اقتباس
استخدم DisplayTag

جزيتم خيراً ..

هذا بالظبط ما أريده ، ( وزيادة ) ..

شكراً لكم .

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#6

1- إذا أردت أن تبيني شئ بنفسك

اقتباس
أعتقد أن موضوع custom tag يفي بالغرض

2- إذا أردت إستخدام مكتبه جاهزه

اقتباس
استخدم DisplayTag

3- نصيحتي لك, ال JSF ستقلل الوقت عليك جيدا, إلا إذا تريت أن تتقن ال JSP/Servlets

#7
اقتباس
3- نصيحتي لك, ال JSF ستقلل الوقت عليك جيدا, إلا إذا تريت أن تتقن ال JSP/Servlets

شكراً على النصيحة أخي ..

أكثر من شخص ، نصحني بمثل هذه النصيحة . . ولكن لا أعرف ان كان الوقت يسعفني للانتقال اليها ( خلال شهر مثلاً ) ،

ليس هدفي اتقان JSP/Servlets بقدر ماهدفي .. هو أن استخدم شيء واضح وأساسي .. حتى لو تعرضت لمشكلة أجد المساعدة أو على الاقل أستطيع أن اخرج منها بالالتفاف على المشكلة .

JSF : مافهمته أنها اطار عمل MVC ، مبني على JSP .

ولا أعرف حدودها ولا امكانياتها ولا أعرف ان كان يمكن دمجها مع JSP مثلاً .. في حال وجدت نفسي في ورطة .

المشكلة أن الوقت ضيّق و علي أن أنهي مشروعين خلال شهرين .. ولذلك أحاول أن أركز على شيء معين .

( كنت أتمنى أن أرى مقالات عن JSF في المنتدى ، ولكن لم أجد للأسف :/ ) .

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#8
اقتباس
JSF : مافهمته أنها اطار عمل MVC ، مبني على Servlets

ميزة ال JSF أنها ستسرع تطويرك كثثييرا,, يعني مثلا 5x

تم تعديل هذه المشاركة بواسطة {هويدي} في 7 أبريل 2010 في 01:45

مواضيع مشابهة