Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Tip
iconfalse
English
You may initialize a new form with some fields pre-populated using Bean Shell Form
Binder
Data Store.
Thai

คุณสามารถเริ่มต้นฟอร์มใหม่ด้วยบางฟิลด์ที่มีการเติมข้อมูลไว้ล่วงหน้าโดยใช้ Bean Shell Form BinderData Store

Figure 1 below shows an example of a form whose first 3 fields are to be pre-populated.

Thai

รูปที่ 1 ด้านล่างแสดงตัวอย่างของฟอร์มที่มี 3 ฟิลด์แรกที่จะถูกเติมไว้ล่วงหน้า


Image AddedImage Removed
Figure 1: Form with Fields to Pre-populate

...

The quick and easy approach in addressing this requirement is to make use of the Beanshell Form Binder Data Store in the section's Load BinderData Store. Edit the section.

Thai

วิธีที่ง่ายและรวดเร็วในการจัดการกับความต้องการนี้คือการใช้ประโยชน์จาก Beanshell Form Binder Data Store ใน Load Binder Data Store ของส่วน แก้ไขส่วน


Image AddedImage Removed
Figure 2: Configuring Section Properties to Determine How Data Will Be Handled

Thai

รูปที่ 2: การกำหนดค่าคุณสมบัติส่วนเพื่อกำหนดวิธีจัดการข้อมูล


In Load BinderData Store, select "Bean Shell Form BinderData Store" as the Load BinderData Store.

Thai

ใน Load Binder Data Store เลือก "Bean Shell Form BinderData Store" เป็น Load BinderData Store


Image AddedImage Removed
Figure 3: Choose Beanshell Form Binder Data Store as the Load BinderData Store

Thai

รูปที่ 3: เลือก Beanshell Form Binder Data Store เป็น Load BinderData Store


Configure the Bean Shell Form Binder Data Store with your own coding to populate relevant fields, as shown in the figure below.

Code used in this example:

Thai

กำหนดค่า Bean Binder Data Store แบบฟอร์มถั่วด้วยการเข้ารหัสของคุณเองเพื่อเติมฟิลด์ที่เกี่ยวข้องดังแสดงในรูปด้านล่าง

รหัสที่ใช้ในตัวอย่างนี้:

Code Block
import org.joget.apps.app.service.*;
import org.joget.apps.form.model.*;
import org.joget.apps.form.service.*;
import java.sql.*;
import java.util.*;

public FormRowSet getData() {

    //-----------------------------------------------------------------------------------
    //In this part of code, it trying to load the original data from form data table.

    FormRowSet results = null;
    if (primaryKey != null && primaryKey.trim().length() > 0) {
        AppService appService = (AppService) FormUtil.getApplicationContext().getBean("appService");
        Form form = FormUtil.findRootForm(element);
        if (form.equals(element) && form.getParent() != null) {
            form = FormUtil.findRootForm(form.getParent());
        }
        if (form != null) {
            results = appService.loadFormDataWithoutTransaction(form, primaryKey);
        }
    }
    //------------------------------------------------------------------------------------

    //------------------------------------------------------------------------------------
    //In this second part of code, it will load the data from external source by using
    //JDBC. It will run only when the first part of code fail to retrieve data from
    //form data table. This example use dir_user table of Joget as external source.

    if (results == null) {
        results = new FormRowSet();

        Connection con = null;
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
	        con = DriverManager.getConnection("jdbc:mysql://localhost:3306/jwdb2?characterEncoding=UTF-8", "root", "root");

	        if(!con.isClosed()){
	            String pId = "#currentUser.username#";
	            String sql = "SELECT firstName, lastName, email FROM dir_user WHERE username=?";
	            PreparedStatement stmt = con.prepareStatement(sql);
		        stmt.setString(1, pId);

		        ResultSet rs = stmt.executeQuery();
		        while (rs.next()) {
		            FormRow row = new FormRow();
		            row.put("firstName", (rs.getString(1) != null)?rs.getString(1):"");
			        row.put("lastName", (rs.getString(2) != null)?rs.getString(2):"");
			        row.put("email", (rs.getString(3) != null)?rs.getString(3):"");
			        results.add(row);
		        }
	        }

	    } catch(Exception ex) {
	        System.err.println("Exception: " + ex.getMessage());
	    } finally {
	        try {
                if(con != null)
                    con.close();
            } catch(SQLException e) {}
	    }
    }
    //------------------------------------------------------------------------------------

    return results;
}

return getData();


Image AddedImage Removed
Figure 4: Populate Beanshell Form Binder Data Store with the Necessary Codes

Thai

รูปที่ 4: เติม Binder Data Store แบบฟอร์ม Beanshell ด้วยรหัสที่จำเป็น

...

Thai

รูปที่ 5: ฟิลด์ที่มีการเติมข้อมูลล่วงหน้า 3 ฟิลด์หลังจากฟอร์มใหม่เต็มแล้ว

 

Related Elements

Thai

องค์ประกอบที่เกี่ยวข้อง