ตัวอย่างการดึงฐานข้อมูลมาแสดงเป็น select box โดยใช้ Bean Shell
- ใน Form Binder คลิก selectbox ที่ต้องการ
- Or Choose Options Binder เลือกเป็น Bean Shell Form Binder
- คลิก 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 () ) ;