我在我的应用程序中使用复选框在Spring中传递一个值。当我选中它时,它工作正常,但当我取消选中它时,问题在于。它显示错误-
警告:org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver -处理程序执行导致异常:所需的字符串参数'isFl'不存在
这里是Fl是我需要通过的复选框的名称。我搜索了很多,得到了许多答案应用在我的程序中,但没有得到想要的结果。
如果有人知道答案,请帮助提前感谢。
控制器程序
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public ModelAndView uploadPost(@RequestParam String fileName, @Validated Template template,
@Validated TemplateBean templateBean,
@RequestParam MultipartFile file,
HttpServletRequest request,**@RequestParam String isFl**) throws Exception
{
ModelAndView model = new ModelAndView("upload");
if(isFl!=null){
addTemplate.setFl(Integer.parseInt(isFl));
}
else{
addTemplate.setFl(0);//false value
}
jsp文件
<input id="checkbox" type="checkbox" **name="isFl"** value="1" >Facility letter
有很多更多的东西,但我只上传了相关的我的问题
4条答案
按热度按时间qnyhuwrf1#
使用必需=假@请求参数(值=“isFl”,必需=假)字符串isFl
um6iljoc2#
添加一个隐藏输入,并将前缀“_”添加到相同的名称,如下所示:
lvjbypge3#
像
...HttpServletRequest request,@RequestParam Boolean isFl)
那样修改代码,因为checkbox是一个布尔值。必需的和字符串参数'isFl'不存在
但您的表单中存在参数
Boolean isFl
dxxyhpgq4#
分享我的答案与复选框的值未被选中时不发送,其值被绑定到非布尔字段(即字符串),因为这个问题显示为顶部结果。
在Spring的WebDataBinder中,它有一个字段标记
DEFAULT_FIELD_DEFAULT_PREFIX
,这在Spring的WebDataBinder API中有描述。基本上,它所做的就是在某个复选框未选中时发送一个默认值,这在复选框绑定到非布尔字段(即String)时特别有用。
Spring中的默认字段默认前缀是感叹号**(!)**。
如果复选框被勾选(或选中),上述代码将发送**“1”值。否则,将发送“0”**(隐藏输入项的值)。
附言