2

Google アプリ エンジン 1.8.0 で Spring MVC 3.2.3.RELEASE (注釈) を使用しています。

フォームからの空白文字列を null 値として変換するための StringTrimmerEditor を追加しましたが、正常に動作していますが、副作用として、コントローラーで @RequestParams を使用するすべてのメソッドは、すべての @RequestParams が入力されることを期待しています。それ以外の場合、http エラー 400 がスローされます。 (required=false) や (defaultValue="some value") などのさまざまな @RequestParam 設定を試しましたが、うまくいきません。

これが私たちがそれをどのように使用しているかです

@ControllerAdvice
public class ControllerSetup
{
    @InitBinder
    public void initBinder ( WebDataBinder binder )
    {
        StringTrimmerEditor stringtrimmer = new StringTrimmerEditor(true);
        binder.registerCustomEditor(String.class, stringtrimmer);

    }
}

コントローラ

@RequestMapping(value="/addreportitems", method=RequestMethod.POST)
    public String saveEditForm(@ModelAttribute DCReport dcReport,
            @ModelAttribute("loggedInEmployee") Employee someEmployee,
            @RequestParam Integer someInteger,
            Model m) {
....
}

someInteger をフォームに入れないと、エラー Error 400 Required Integer parameter 'someInteger' is not present が発生します

StringTrimmer を削除すると、完全に正常に動作します。ここで何か不足していますか? 助けてくれてありがとう。

4

1 に答える 1

1

以下は私のために働いています:

@InitBinder
public void initBinder(WebDataBinder binder) {
    binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
}

@ResponseBody
@RequestMapping("/foo")
public String renderFoo(@RequestParam(required=false) String bar) {
    return bar;
}

でテストしていたときに、どこかで間違いを犯したに違いありませんrequired=false

于 2013-06-24T18:05:38.633 に答える