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")文字列 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 に答える