Spring 未显示动态生成的表单 ID 的验证错误
Spring is not showing validation error for Dynamically generated Form Id
Spring 验证适用于具有静态 ID 的表单。但在我的场景中,表单是在前端动态生成的。
例如 - 我的表单 bean 是 - GenericQuestionnaireForm 所以如果我有如下表单元素
<form:form method="post" modelAttribute="genericQuestionnaireForm" action="/save-generic-questionnaire">
验证工作正常,错误显示正确。
但我必须捕获不同产品的表单值,因此我通过将表单名称附加到产品编号来生成具有唯一 ID 的不同表单。
<form:form method="post" modelAttribute="product1_genericQuestionnaireForm" action="/save-generic-questionnaire">
当我将此表单提交到我的控制器方法时,BindingResult 会附加到 genericQuestionnaireForm 表单对象,因此错误不会在前端显示。
@RequestMapping(value = "/save-generic-questionnaire", method = RequestMethod.POST)
public String saveQuestionnaire(@Valid final GenericQuestionnaireForm genericQuestForm,final BindingResult bindingResult, final Model model,
final RedirectAttributes redirectModel, final HttpServletRequest request) throws CMSItemNotFoundException{
if(genericQuestForm != null) {
genericQuestionnaireFormValidator.validate(genericQuestForm, bindingResult);
if (bindingResult.hasErrors())
{ return //to the front end..}
}
我的问题是 - 有没有办法将 BindingResult 附加到动态表单 ID 以显示生成的错误。或者在这种情况下是否有更好的方法来进行表单验证?
<<form:form:form method="post" modelAttribute="genericQuestionnaireForm" action="/save-generic-questionnaire" >
<form:hidden path="id"/>
.................
</form:form>
模型属性属性始终保持不变。
@ModelAttribute("genericQuestionnaireForm")
public genericQuestionnaireForm getgenericQuestionnaireForm(){
return new genericQuestionnaireForm();
}
RequestMapping(value = "/save-generic-questionnaire", method =
RequestMethod.POST)
public String saveQuestionnaire(@Valid final GenericQuestionnaireForm genericQuestForm, BindingResult bindingResult.....
要识别不同的产品,只需使用隐藏 ID。
Spring 验证适用于具有静态 ID 的表单。但在我的场景中,表单是在前端动态生成的。
例如 - 我的表单 bean 是 - GenericQuestionnaireForm 所以如果我有如下表单元素
<form:form method="post" modelAttribute="genericQuestionnaireForm" action="/save-generic-questionnaire">
验证工作正常,错误显示正确。
但我必须捕获不同产品的表单值,因此我通过将表单名称附加到产品编号来生成具有唯一 ID 的不同表单。
<form:form method="post" modelAttribute="product1_genericQuestionnaireForm" action="/save-generic-questionnaire">
当我将此表单提交到我的控制器方法时,BindingResult 会附加到 genericQuestionnaireForm 表单对象,因此错误不会在前端显示。
@RequestMapping(value = "/save-generic-questionnaire", method = RequestMethod.POST)
public String saveQuestionnaire(@Valid final GenericQuestionnaireForm genericQuestForm,final BindingResult bindingResult, final Model model,
final RedirectAttributes redirectModel, final HttpServletRequest request) throws CMSItemNotFoundException{
if(genericQuestForm != null) {
genericQuestionnaireFormValidator.validate(genericQuestForm, bindingResult);
if (bindingResult.hasErrors())
{ return //to the front end..}
}
我的问题是 - 有没有办法将 BindingResult 附加到动态表单 ID 以显示生成的错误。或者在这种情况下是否有更好的方法来进行表单验证?
<<form:form:form method="post" modelAttribute="genericQuestionnaireForm" action="/save-generic-questionnaire" >
<form:hidden path="id"/>
.................
</form:form>
模型属性属性始终保持不变。
@ModelAttribute("genericQuestionnaireForm")
public genericQuestionnaireForm getgenericQuestionnaireForm(){
return new genericQuestionnaireForm();
}
RequestMapping(value = "/save-generic-questionnaire", method =
RequestMethod.POST)
public String saveQuestionnaire(@Valid final GenericQuestionnaireForm genericQuestForm, BindingResult bindingResult.....
要识别不同的产品,只需使用隐藏 ID。