I have same problem
. I have 2 variants to sovlve this problem
1 - Server side
2 - Client side
1. Add hidden field in your html form such as:
Code:
<INPUT type="hidden" name="<c:out value="${status.expression}"/>" id="toAddMilestone" >
. Now when user click to add or remove entity (in your example - price) just set value for this field to "add" of "remove", using javascript. And then call submit:
Code:
<a href="javascript:document.getElementById('toAddMilestone').value='add'; document.forms[0].submit()"/>
Then in Form class in Submit method:
Code:
protected ModelAndView onSubmit(HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors)
throws Exception {
Job job = (Job) command;
if (!isSubmit(job)) {
if (job.getToAddMilestone().matches("del_-?\\d+")) {
removeMilestone(job);
} else {
addMilestone(job);
}
setFormBackingSessionObject(request, job);
return showForm(request, errors, getFormView());
}
return super.onSubmit(request, response, job, errors);
}
- check if user add entity or it is general submit and set prices to your Construction
And you should bind correctly values in onBindAndValidate method to show added prices after page reloading.
2 variant - using javascript. You may create all logic for adding or removing fields and validate values using javascript. And in submit method just parse request parameters.