在spring mvc中未选中时,复选框未传递参数

nle07wnf  于 2022-12-27  发布在  Spring
关注(0)|答案(4)|浏览(191)

我在我的应用程序中使用复选框在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

有很多更多的东西,但我只上传了相关的我的问题

qnyhuwrf

qnyhuwrf1#

使用必需=假@请求参数(值=“isFl”,必需=假)字符串isFl

um6iljoc

um6iljoc2#

添加一个隐藏输入,并将前缀“_”添加到相同的名称,如下所示:

<input type="hidden" name="_isFl" value="on" >
lvjbypge

lvjbypge3#

...HttpServletRequest request,@RequestParam Boolean isFl)那样修改代码,因为checkbox是一个布尔值。

必需的字符串参数'isFl'不存在

但您的表单中存在参数Boolean isFl

dxxyhpgq

dxxyhpgq4#

分享我的答案与复选框的值未被选中时不发送,其值被绑定到非布尔字段(即字符串),因为这个问题显示为顶部结果。
在Spring的WebDataBinder中,它有一个字段标记DEFAULT_FIELD_DEFAULT_PREFIX,这在Spring的WebDataBinder API中有描述。
基本上,它所做的就是在某个复选框未选中时发送一个默认值,这在复选框绑定到非布尔字段(即String)时特别有用。
Spring中的默认字段默认前缀是感叹号**(!)**。

<input id="checkbox" type="checkbox" name="isFl" value="1" >Facility letter
<input type="hidden" name="!isFl" value="0" />

如果复选框被勾选(或选中),上述代码将发送**“1”值。否则,将发送“0”**(隐藏输入项的值)。
附言

相关问题