*/
protected FormRowSet getRows(FormData formData) {
if (cachedRowSet == null) {
String id = getPropertyString(FormUtil.PROPERTY_ID);
String param = FormUtil.getElementParameterName(this);
FormRowSet rowSet = new FormRowSet();
rowSet.setMultiRow(true);
// get headers
Map<String, String> headerMap = getHeaderMap(formData);
// read from 'value' property
String json = getPropertyString(FormUtil.PROPERTY_VALUE);
try {
rowSet = parseFormRowSetFromJson(json);
} catch (Exception ex) {
LogUtil.error(Grid.class.getName(), ex, "Error parsing grid JSON");
}
// read from request if available.
boolean continueLoop = true;
int i = 0;
while (continueLoop) {
FormRow row = new FormRow();
for (String header : headerMap.keySet()) {
String paramName = param + "_" + header + "_" + i;
String paramValue = formData.getRequestParameter(paramName);
if (paramValue != null) {
row.setProperty(header, paramValue);
}
}
i++;
if (!row.isEmpty()) {
if (i == 0) {
// reset rowset
rowSet = new FormRowSet();
}
rowSet.add(row);
} else {
// no more rows, stop looping
continueLoop = false;
}
}
if (!FormUtil.isFormSubmitted(this, formData)) {
// load from binder if available
FormRowSet binderRowSet = formData.getLoadBinderData(this);
if (binderRowSet != null) {
if (!binderRowSet.isMultiRow()) {
// parse from String
if (!binderRowSet.isEmpty()) {
FormRow row = binderRowSet.get(0);
String jsonValue = row.getProperty(id);
try {
rowSet = parseFormRowSetFromJson(jsonValue);
} catch (Exception ex) {
LogUtil.error(Grid.class.getName(), ex, "Error parsing grid JSON");