View previous topic :: View next topic |
Author |
Message |
vahid بي تو هرگز
Joined: 26 Nov 2004 Posts: 3067 Location: Tehran
|
Posted: Wed Nov 26, 2014 3:14 pm Post subject: Screen Widget |
|
|
هر View از MVC ها با یک اسکرین یا شامل شده درون یک اسکرین می باشد. هر اسکرین با یک screen widget مشخص می شود. |
|
Back to top |
|
|
vahid بي تو هرگز
Joined: 26 Nov 2004 Posts: 3067 Location: Tehran
|
Posted: Wed Nov 26, 2014 3:31 pm Post subject: |
|
|
ویجت ها ابزارهای OFBIZ هستند نه Tomcat . آفبیز تمام درخواست های کاربران نهایی را با یک موجودیت تنها به نام control servlet تفسیر می کند . Control Servlet در web.xml تعریف می شود.
| <servlet>
<servlet-name>ControlServlet</servlet-name>
<servlet-class>org.ofbiz.webapp.control.ControlServlet</servlet-
class>
</servlet>
<servlet-mapping>
<servlet-name>ControlServlet</servlet-name>
<url-pattern>/control/*</url-pattern>
</servlet-mapping>
|
در اینجا درخواست های ControlServlet را که با control/ شروع می شوند تفسیر می کند تنظیم کرده ایم .
هر پترن درخواستی دیگری که می آید توسط تام کت کنترل می شود. |
|
Back to top |
|
|
vahid بي تو هرگز
Joined: 26 Nov 2004 Posts: 3067 Location: Tehran
|
Posted: Wed Nov 26, 2014 3:35 pm Post subject: r |
|
|
اسکرین ویجت ها توسط هندلرهای اسکرین ویجت ها در آفبیز پردازش می شوند .
| <handler name="screen" type="view"
class="org.ofbiz.widget.screen.ScreenWidgetViewHandler"/>
|
در دستور فوق به کنترل سرولت گفتیم تمام اسکرین ویجت ها را با کلاس ScreenWidgetViewHandler هندل کند. |
|
Back to top |
|
|
vahid بي تو هرگز
Joined: 26 Nov 2004 Posts: 3067 Location: Tehran
|
Posted: Sat Nov 29, 2014 10:31 am Post subject: |
|
|
سرولت کنترلر با استفاده از فایل controller.xml تنظیم می شود. در این فایل سه المان تنظیم کننده وجود دارد . handler, request-map, view-map
المان request-map برای مچ شدن با درخواست واقعی می باشد. در نظر داشته باشید که نام webapp ما و کنترل توسط سرولت کانتینر مچ شده است که پردازش به این نقطه رسیده است. بنابراین باقیمانده آدرس در اینجا در URL فقط MAIN می باشد. چیزی شبیه به کد زیر:
| <request-map uri="main">
<security https="true" auth="true"/>
<response name="success" type="view" value="main"/>
</request-map> |
با اضافه کردن کد فوق درصورتی که درخواستی مشابه partymgr/control/main بیاید اتفاقی حاصل نمی شود چون هیچ رویدادی برای این درخواست صادر نشده است. باید بشرح ذیل عمل کرد:
در واقع خط reponse می گوید نوع جواب view می باشد با نام main.
المان VIEW-MAP این المان بشرح ذیل پر می شود:
| <view-map name="main" type="screen" page="component://party/widget/partymgr/PartyScreens.xml#findparty"/> |
نوع view همانطور که آمده از نوع screen می باشد و مشخصات screen نیز از مسیری که داده شده PartyScreens.xml#findparty آمده است . در واقع مشخص می شود اسکرینی داریم به نام findparty که باید آن نمایش داده شود. آفبیس در این مکانیزم سعی کرده است که جای داشتن چندین فایل xml کوچک که هر کدام مشخصات اسکرین ها را نمایش می دهند در یک فایل امکان تعریف چند اسکرین را فراهم آورد.
المان : هندلر:
باید در ابتدای فایل خط ذیل را اضافه کنیم :
| <handler name="screen" type="view" class="org.ofbiz.widget.screen.ScreenWidgetViewHandler"/> |
|
|
Back to top |
|
|
vahid بي تو هرگز
Joined: 26 Nov 2004 Posts: 3067 Location: Tehran
|
Posted: Sat Nov 29, 2014 3:43 pm Post subject: |
|
|
المان اسکرین:
هر اسکرین می تواد شاملی تعدادی سکشن باشد.
هر سکشن میتواند شامل actions و widgets باشد.
المان ویجت:
در اینجا تمام سکشن اسکرین ما شامل فقط یک ویجت می باشد که decorator-screen نام دارد.
دکوراتور بصورت تحت الفظی محتویات اسکرین را نگه می دارد . مثلا در صفحه findparty اسکرین فرم جستجو شامل بعضی فیلد ها برچسب دکمه ثبت می باشد . اما وقتی صفحه در مرورگر تولید می شود باید شامل هدر فوتر و منو باشد . تمام این المان ها توسط دکوراتور اضافه می شود.
خصیصه location المان decorator-screen به محل تعریف دکوراتور اشاره می کند. در اکثر موارد دکوراتور را بعنوان قسمتی از فریم ورک می شناسیم . نه داخل برنامه کاربردی. متغیری مثل ${parameters.mainDecoratorLocation} می تواند به محل تعیین دکوراتور اشاره کند. |
|
Back to top |
|
|
vahid بي تو هرگز
Joined: 26 Nov 2004 Posts: 3067 Location: Tehran
|
Posted: Mon Dec 01, 2014 9:36 am Post subject: CommonScreen |
|
|
فایل CommonScreens.xml در دایرکتوری ویجت قرار دارد. این فایل شامل اسکرین های عمومی در طول کل پروژه می باشد. این اسکرین های عمومی هدر و فوتر دارند بنابراین هر اسکرین دیگری که بخواهد از این آیتم ها استفاده می کند .
| <screen name="CommonPracticeDecorator">
<section>
<widgets>
<decorator-section-include name="body"/>
</widgets>
</section>
</screen> |
|
|
Back to top |
|
|
vahid بي تو هرگز
Joined: 26 Nov 2004 Posts: 3067 Location: Tehran
|
Posted: Mon Dec 01, 2014 11:07 am Post subject: Controller Servlet |
|
|
کنترلر سرولت در فایل controller.xml تنظیم می شود این فایل سه المان مهم دارد :
handler, request-map, view-map
المان request-map
خصیصه uri جهت نقش نمودن request-map به درخواست واقعی استفاده می شود. در نظر داشته باشید که نام webapp و کنترل قبلا از طریق آدرس صفحه داده شده است. بنابراین باقیمانده آدرس که main می باشد parsx/control/main بشرح ذیل می باشد
| <request-map uri="main">
<security https="true" auth="true"/>
<response name="success" type="view" value="main"/>
</request-map> |
نکته حایز اهمیت این است که اگر ما در پروژه auth=true بگذاریم کاربر باید لاگین کند یعنی به صفحه login هدایت شود که در اینجا ما هنوز برای LOGIN چیزی تعریف نکرده ایم .
المان VIEW-MAP
|
<view-map name="main" type="screen" page="component://party/widget/partymgr/PartyScreens.xml#findparty"/> |
در مکانیزم آفبیس وقتی می بیند type=screen نوشته ایم قسمت تعریف اسکرین findparty را جدا می کند و می خواند.
المان HANDLER
امشخصات تعریف شده در view-map توسط هندلر تعریف شده در این المان که معمولا اولین قسمت فایل controller.xml می باشد تفسیر می شود.
| <handler name="screen" type="view" class="org.ofbiz.widget.screen.ScreenWidgetViewHandler"/> |
|
|
Back to top |
|
|
|