How to Retrieve Liferay Form Entries Values

thumbnail
Anupam Shrivastava, modified 6 Years ago. New Member Posts: 3 Join Date: 7/24/15 Recent Posts
While it is possible to use "/ddm.ddmforminstancerecord/get-form-instance-records" public API (jsonws) to retrieve form entries data, there is no public API for retrieving its field values.However, there is available "getDDMFormInstances" method, which can be used to accomplish that in plain regular java.
Here's a quick example on how to use it:

import com.liferay.dynamic.data.mapping.service.DDMFormInstanceLocalServiceUtil; 
import com.liferay.dynamic.data.mapping.model.DDMFormInstance; 
import com.liferay.dynamic.data.mapping.model.DDMFormInstanceRecord; 
import com.liferay.dynamic.data.mapping.storage.DDMFormValues; 
import com.liferay.dynamic.data.mapping.storage.DDMFormFieldValue; 
import com.liferay.portal.kernel.exception.PortalException; 
import com.liferay.dynamic.data.mapping.model.Value; 

List<DDMFormInstance> ddmFmInstanceList = DDMFormInstanceLocalServiceUtil.getDDMFormInstances(-1, -1);
for(DDMFormInstance ddmFmInstance : ddmFmInstanceList) { 
List<DDMFormInstanceRecord> reclist = ddmFmInstance.getFormInstanceRecords(); 
for(DDMFormInstanceRecord rec : reclist) { 
DDMFormValues fmvals; 
try { 
    fmvals = rec.getDDMFormValues(); 
    List<DDMFormFieldValue> formFieldVals = fmvals.getDDMFormFieldValues(); 
    for (DDMFormFieldValue fmval : formFieldVals) { 
    Value val = fmval.getValue(); 
    String data = val.getString(Locale.ROOT); 
    String name = fmval.getName(); 
    out.println(" My DDM Form Values Details : "+name+" => "+data); } } 
catch (PortalException e) { e.printStackTrace(); } } }

Executing this script from "Control Panel > Server Administration > Script" will list all the form's field values.

Disclaimer: Please note that this is a sample of how to extend your portlet and should only be used as a reference.