вот что я сделал, чтобы придумать ситуацию:
Я сохранил в БД переменные параметры, вот сущность:
@Entity
@Table(name = "ACTIVITYPARAMETER")
public class ActivityParameter implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@SequenceGenerator(name = "ACTIVITYPARAMETER_IDACTIVITYPARAMETER_GENERATOR", sequenceName = "SN_ACTIVITYPARAMETER",
allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ACTIVITYPARAMETER_IDACTIVITYPARAMETER_GENERATOR")
@Column(name = "ID_ACTIVITYPARAMETER", unique = true, nullable = false)
private Long idActivityParameter;
@Column(nullable = false, length = 256)
private String paramName;
@Column(nullable = false, length = 256)
private String paramType;
// uni-directional many-to-one association to Activitysetting
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "ACTIVITYSETTING_ID", nullable = false)
private ActivitySetting activitySetting;
@Column(name = "PARAMORDER", nullable = false)
private Long order;
@Column(name = "PARAMMANDATORY", nullable = false, precision = 1)
@TypeConverter(name = "booleanToNumberConverter", dataType = BigDecimal.class, objectType = Boolean.class)
private boolean mandatory;
во время создания сетки, я создал фиксированные столбцы, затем сделал цикл для построения переменных параметров, используя просто set (paramName, DEFAULT_VALUE) следующим образом:
// Extra Fields
List<ActivityParameterModel> parameters = folderModel.getParameters();
int index = 1;
for (ActivityParameterModel param : parameters) {
String columnId = "param" + (index++);
col = new ColumnConfig(columnId, param.getParamName(), 90);
NumberField nf = new NumberField();
col.setEditor(new CellEditor(nf));
ActivityParamType paramType = param.getParamType();
switch (paramType) {
case N:
nf.setValidateOnBlur(true);
break;
}
config.add(col);
}
создает дополнительные столбцы, и во время отправки я восстанавливаю значения, повторяя цикл по списку параметров и вызывая get (paramName) для восстановления значения.