【问题标题】:Errors/BindingResult argument is expected错误/BindingResult 参数是预期的
【发布时间】:2023-03-05 16:05:01
【问题描述】:

我正在学习 Spring MVC,并且正在尝试验证表单。当用户搜索空白字符串时,它会显示错误。执行代码时出现以下错误

Errors/BindingResult 参数应该紧跟在控制器方法签名中的模型属性参数之后:public java.lang.String com.mycompany.controller.catalog.SearchController.search(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse,java.lang.String,org.springframework.validation.BindingResult,org.springframework.ui.Model) 抛出 javax.servlet.ServletException,java.io.IOException,org.broadleafcommerce.common.exception .ServiceException

package com.mycompany.controller.catalog;

import org.broadleafcommerce.common.exception.ServiceException;

import org.broadleafcommerce.core.web.controller.catalog.Mysearchcontroller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import  org.springframework.web.method.support.ModelAndViewContainer;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

@Controller
@RequestMapping("/search")
public class SearchController extends Mysearchcontroller {


    @RequestMapping("")
    public String search(HttpServletRequest request, HttpServletResponse response,
            @RequestParam(value = "q") String q,BindingResult errors,Model model) throws ServletException, IOException, ServiceException {
        return search3(model, request,response, q ,errors);
    }

}

【问题讨论】:

  • @指定错误..!!
  • Spring 不同于 Spring MVC。前者是编写Java企业应用程序的框架(也可以在Java SE应用程序中使用),后者是实现MVC模式的Web应用程序框架。

标签: java spring-mvc


【解决方案1】:

BindingResult 参数只能与@ModelAttribute 注释方法结合使用。没有模型属性就没有绑定,因此没有BindingResult 实例可用。因此,在您的情况下,您必须删除 BindingResult 参数,因为由于缺少模型属性,它在您的情况下永远不会起作用。

模型属性Model 相同(如前所述)。 model 属性是Model 的一部分。

【讨论】:

    【解决方案2】:

    如果 q 是可选的,则修改 @RequestParam(value = "q") String q (@RequestParam(required = false) String q

     @RequestMapping("")
     public String search(HttpServletRequest request, HttpServletResponse response,
            (@RequestParam(required = false) String q,BindingResult errors,Model model) throws ServletException, IOException, ServiceException {
            return search3(model, request,response, q ,errors);
     }
    

    【讨论】:

    • 正如异常所说,您还需要将BindingResult 参数放在方法签名中的模型参数之后
    猜你喜欢
    • 2019-08-28
    • 2018-05-19
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    • 2020-09-25
    相关资源
    最近更新 更多