1
0
-1
1 answer
- 210
You can look at the populateSubFormWithParentKey method in java class AbstractSubForm https://github.com/jogetworkflow/jw-community/blob/e6ac28250a9e8a707a3a66499876bede2d77271d/wflow-core/src/main/java/org/joget/apps/form/model/AbstractSubForm.java#L270
Add your comment...
i create 2 form and used bean shell store binder to store data in both form. But bean shell store binder in sub form not working.
main form bean shell store binder
import java.sql.*; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.text.DecimalFormat; import java.util.*; import javax.sql.DataSource; import org.apache.commons.collections.SequencedHashMap; import org.joget.apps.app.service.AppUtil; import org.joget.apps.form.lib.*; import org.joget.apps.form.model.*; 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.model.FormStoreBinder; import org.joget.apps.form.service.*; import org.joget.apps.form.service.FormUtil; import org.joget.commons.util.LogUtil; import org.joget.commons.util.UuidGenerator; import org.joget.plugin.base.PluginManager; public FormRowSet store(Element element, FormRowSet rows, FormData formData) { //check the rows is not empty before store it if (rows != null && !rows.isEmpty()) { //Get the submitted data FormRow row = rows.get(0); // backup old datas to history table Form parentForm = FormUtil.findRootForm(element); String pk = parentForm.getPrimaryKeyValue(formData); System.out.println(" "); System.out.println("app_fd_demoMain ID = " + pk); System.out.println(" "); //Reuse Workflow Form Binder to store data PluginManager pluginManager = (PluginManager) AppUtil.getApplicationContext().getBean("pluginManager"); FormStoreBinder binder = (FormStoreBinder) pluginManager.getPlugin("org.joget.apps.form.lib.WorkflowFormBinder"); binder.store(element, rows, formData); } return rows; } //call store method with injected variable return store(element, rows, formData);and in sub form
import java.sql.*; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.text.DecimalFormat; import java.util.*; import javax.sql.DataSource; import org.apache.commons.collections.SequencedHashMap; import org.joget.apps.app.service.AppUtil; import org.joget.apps.form.lib.*; import org.joget.apps.form.model.*; 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.model.FormStoreBinder; import org.joget.apps.form.service.*; import org.joget.apps.form.service.FormUtil; import org.joget.commons.util.LogUtil; import org.joget.commons.util.UuidGenerator; import org.joget.plugin.base.PluginManager; public FormRowSet store(Element element, FormRowSet rows, FormData formData) { //check the rows is not empty before store it if (rows != null && !rows.isEmpty()) { //Get the submitted data FormRow row = rows.get(0); // backup old datas to history table String pk = element.getPrimaryKeyValue(formData); System.out.println(" "); System.out.println("app_fd_demo ID = " + pk); System.out.println(" "); //Reuse Workflow Form Binder to store data PluginManager pluginManager = (PluginManager) AppUtil.getApplicationContext().getBean("pluginManager"); FormStoreBinder binder = (FormStoreBinder) pluginManager.getPlugin("org.joget.apps.form.lib.WorkflowFormBinder"); binder.store(element, rows, formData); } return rows; } //call store method with injected variable return store(element, rows, formData);