Joget DX 8 Stable Released
The stable release for Joget DX 8 is now available, with a focus on UX and Governance.
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
import org.joget.apps.form.service.FormUtil; 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.Form; import org.joget.apps.form.model.FormData; import org.joget.commons.util.LogUtil; public boolean validate(Element element, FormData formData, String[] values) { boolean result = true; //get field values from form data object Form form = FormUtil.findRootForm(element); String locNameString = "locationName"; Element locNameField = FormUtil.findElement(locNameString, form, formData); if (locNameField!=null) { //get value of fields String locNameValue = FormUtil.getElementPropertyValue(locNameField, formData); 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()) { PreparedStatement stmt = con.prepareStatement("SELECT * FROM app_fd_test_tableInfo WHERE NOT EXISTS (SELECT 1 FROM app_fd_test_tableInfo WHERE c_field1=?)"); stmt.setObject(1, locNameValue); ResultSet rs = stmt.executeQuery(); if (rs.next()) { result = false; }else{ result = true; } } } catch(Exception e) { LogUtil.error("Sample app - Form 1", e, "Error loading user data in load binder"); } finally { //always close the connection after used try { if(con != null) { con.close(); } } catch(SQLException e) {/* ignored */} } }else{ result = false; } return result; } //call validate method with injected variable return validate(element, formData, values); |
Do note that if you would like to change this BeanShell code to meet your requirements, it is fairly simple. All you have to do is change the following lines:
...