การดึง form โดยใช้ groovy เพื่อแสดงในไฟล์ freemarker ใน ofbiz

ใน การดึง form โดยใช้ groovy เพื่อแสดงในไฟล์ freemarker ใน ofbiz นั้น เป็นอีกวิธีการหนึ่งที่ช่วยคัดกรองข้อมูล และเตรียมข้อมูลให้พร้อมก่อนแสดงผล จากตัวอย่างโคด จากใน screen

      

จากในแท็ก actions จะเห็นว่ามีการเรียกใช้ไฟล์ groovy อยู่

ถ้าเราไปดูในไฟล์ groovy เอง เราจะต้องเรียก form-widget ดังนี้ครับ
techDataCalendar = [:];
calendarExceptionDays = [];

calendarId = parameters.calendarId ?: request.getAttribute("calendarId");
if (calendarId) {
  techDataCalendar = delegator.findByPrimaryKey("TechDataCalendar", [calendarId : calendarId]);
}
if (techDataCalendar) {
  calendarExceptionDays = techDataCalendar.getRelated("TechDataCalendarExcDay");
}
HtmlFormWrapper listCalendarExceptionDayWrapper = new HtmlFormWrapper("component://imas-manufacturing/webapp/imas-manufacturing/routing/CalendarForms.xml", "ListCalendarExceptionDay", request, response);
listCalendarExceptionDayWrapper.putInContext("calendarExceptionDays", calendarExceptionDays);

context.listCalendarExceptionDayWrapper = listCalendarExceptionDayWrapper;

จุดสำคัญอยู่ตรงนี้ครับ
HtmlFormWrapper listCalendarExceptionDayWrapper = new HtmlFormWrapper("component://imas-manufacturing/webapp/imas-manufacturing/routing/CalendarForms.xml", "ListCalendarExceptionDay", request, response);
listCalendarExceptionDayWrapper.putInContext("calendarExceptionDays", calendarExceptionDays);

context.listCalendarExceptionDayWrapper = listCalendarExceptionDayWrapper;

ซึ่งตัว calendarExceptionDays ก็เป็นค่าที่ได้ส่งออกไปให้ form ส่วนใน form-widget ก็ทำการแมบค่าเข้าไปเลย ตัวอย่าง ในตัวของฟอร์ม list-name ส่วนตัว listCalendarExceptionDayWrapper จะถูเรียกในไฟล์ .ftl ครับ
odd-row-style="alternate-row" default-table-style="basic-table hover-bar">


สำหรับการแสดงผลเราจะใช้ ไฟล์ .ftl ในการแสดงผลครับ

${uiLabelMap.ManufacturingEditCalendarExceptionDayFor} <#if (techDataCalendar.description)?has_content>"${(techDataCalendar.get("description",locale))}" [${uiLabelMap.CommonId} ${techDataCalendar.calendarId?if_exists}]

${listCalendarExceptionDayWrapper.renderFormString(context)}

จุดสำคัญอยู่ตรงนี้ครับ จากการ context มาจากไฟล์ groovy
  context.listCalendarExceptionDayWrapper = listCalendarExceptionDayWrapper;

ซึ่งเราจะมาเรียกใช้จากข้อมูลที่ context มาจากไฟล์ groovy
  ${listCalendarExceptionDayWrapper.renderFormString(context)}

About Nop

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.
    Blogger Comment

0 comments:

Post a Comment