Site icon PlusMagi's Blog By Pitt Phunsanit

joget:Form Options Binder

ตัวอย่างการดึงฐานข้อมูลมาแสดงเป็น select box โดยใช้ Bean Shell

  1. ใน Form Binder คลิก selectbox ที่ต้องการ
  2. Or Choose Options Binder เลือกเป็น Bean Shell Form Binder
  3. คลิก next จะเปลี่ยนไปหน้า Edit Select Box > Configure Bean Shell Form Binder > Advanced Options ให้นำ code ไปใส่ไว้
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.DataSource;
import org.joget.apps.app.service.AppUtil;
import org.joget.apps.form.model.Element;
import org.joget.apps.form.model.FormData;
import org.joget.apps.form.model.FormRow;
import org.joget.apps.form.model.FormRowSet;
import org.joget.apps.form.service.FormUtil;
import org.joget.commons.util.LogUtil;
 
public FormRowSet load(Element element, String primaryKey, FormData formData) {
    FormRowSet rows = new FormRowSet();
    Connection con = null;
    try {
        /*retrieve connection from the default datasource*/
        DataSource ds = (DataSource) AppUtil.getApplicationContext().getBean("setupDataSource");
        con = ds.getConnection();
        /*execute SQL query*/
        if (!con.isClosed()) {
            String sql = "SELECT PROVINCE_ID AS value, TRIM(PROVINCE_NAME) AS label FROM province ORDER BY PROVINCE_NAME ASC";
            PreparedStatement stmt = con.prepareStatement(sql);
            ResultSet rs = stmt.executeQuery();
 
            FormRow option = new FormRow();
 
            option.setProperty(FormUtil.PROPERTY_LABEL, "please select");
            //option.setProperty(FormUtil.PROPERTY_VALUE, (String) rs.getObject("value").toString());
 
            rows.add(option);
 
            while (rs.next()) {
                FormRow option = new FormRow();
 
                option.setProperty(FormUtil.PROPERTY_LABEL, (String) rs.getObject("label"));
                option.setProperty(FormUtil.PROPERTY_VALUE, (String) rs.getObject("value").toString());
 
                rows.add(option);
            }
        }
    } catch (Exception e) {
        LogUtil.error("Sample app - Form 1", e, "Form Options Binder");
    } finally {
        /*always close the connection after used*/
        try {
            if (con != null) {
                con.close();
            }
        } catch (SQLException e) { /*ignored*/ }
    }
    return rows;
}
 
/*call load method with injected variable*/
return load(element, primaryKey, formData);

การเซ็ต value ของ option บางครั้งต้องแปลง integer เป็น string ด้วย เช่น option.setProperty(FormUtil.PROPERTY_VALUE, (String) rs.getObject(“value”).toString());

Exit mobile version