1

我正在学习 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);
    }

}
4

2 回答 2

2

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

模型属性与(如所暗示Model的)不同。模型属性是Model.

于 2013-09-02T13:39:58.893 回答
0

如果 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);
 }
于 2013-09-02T07:34:01.780 回答