Does it happen even if it's the first time you submit your form? If not, try cleaning your cache after you're done with all actions in your controller.
Add the SessionStatus in your method and call "setComplete()" to clean the attributes. Thus, the second time you start your process, your cache will be empty and you will have to use a new preApprovalRequest
@RequestMapping(value = "/submit", method = RequestMethod.POST)
public String submitResults(@ModelAttribute(value = "preApprovalRequest") @Valid PreApprovalRequest preApprovalRequest, BindingResult errors, SessionStatus status) {
/HERE: It looks like if I have some headings in the preApprovalRequest object already, the call of this method will not delete those, but will append to the existing list.
//save object in DB.
status.setComplete();
return "dashboard";
}