2013-10-04 28 views
12

なぜ、requestparamが「0」または「1」であるかに基づいて、Spring 3.2でブール値がマッピングされるのはなぜですか? requestparamが、私はそれが"?preview=true"になりたいSpring @RequestParamマッピングtrueまたはfalseではなく1または0に基づくブーリアン

奇妙である"?preview=1"とき

@RequestParam(required= false, defaultValue = "false") Boolean preview 

プレビューのみ"true"になります。それ、どうやったら出来るの?

+0

あなたは、デフォルト値と必要なfalseを持つリクエストパラメータがURLで完全に無視される方法を知っていました。つまり、リクエストパラメータのURLに何も置く必要がないということです。 あなたの例では、 'preview'はURLの一部ではありません。 –

答えて

8

春はStringToBooleanConverterを確認... trueブール値として、上はいを解釈することができるはずです。

+0

には、必要なものをオフにしてデフォルト値を指定する方法がありますが、URLにはrequestパラメータについて言及する必要はありません。 –

+0

{{@RequestParam(defaultValue = "true")ブール通知}} 問題を解決するのに十分なはずです。 – varra

40

あなたの質問に効果的に回答するには、詳細が必要な場合があります。

私はの線に沿って春3.2のコード働いています:

@RequestMapping(value = "/foo/{id}", method = RequestMethod.GET) 
@ResponseBody 
public Foo getFoo(
    @PathVariable("id") String id, 
    @RequestParam(value="bar", required = false, defaultValue = "true") 
     boolean bar) 
{ 
    ... 
} 

春を正しく虚偽であるとして、真であるとして?bar=true?bar=1、または?bar=yesを解釈し、?bar=false?bar=0、または?bar=no

true/falseとyes/noは大文字と小文字を区別しません。

+0

これはIgnoreCaseと同じですか? 'bar = TRUE'、' bar = TrUe'、 'bar = yES' ...を送ると期待される結果が得られますか? –

+0

下記のPavelによってリンクされたソースコードによれば、大文字小文字は無視されます。 – stenix

関連する問題