2016-05-21 86 views
1

このチェックボックスをオフにすると、springMVCコントローラで正しいマッピング関数が見つからないという問題があります。チェックされているとtrue値しか送信しないように見えるので、チェックされていなければ偽の値を送信しません。spring mvc controllerでhtmlチェックボックスの値を受け取る方法

<form action="editCustomer" method="post"> 
 
    <input type="checkbox" name="checkboxName"/> 
 
</form>

@RequestMapping(value = "/editCustomer" , method = RequestMethod. POST) 
 
public void editCustomer(@RequestParam("checkboxName")String[] checkboxValue) 
 
{ 
 
    if(checkboxValue[0]) 
 
    { 
 
    System.out.println("checkbox is checked"); 
 
    } 
 
    else 
 
    { 
 
    System.out.println("checkbox is not checked"); 
 
    } 
 
}

答えて

1

私は@RequestMappingrequired = falseを指定する同様の問題を解決しました。 この場合、パラメータcheckboxValueは、チェックボックスがフォームにチェックされていない場合はnull、チェックされている場合は"on"に設定されます。

@RequestMapping(value = "/editCustomer" , method = RequestMethod. POST) 
public void editCustomer(@RequestParam(value = "checkboxName", required = false) String checkboxValue) 
{ 
    if(checkboxValue != null) 
    { 
    System.out.println("checkbox is checked"); 
    } 
    else 
    { 
    System.out.println("checkbox is not checked"); 
    } 
} 

これが誰かを助けることができる希望:)

1

私は、チェックボックスの同じ名前の隠し入力を追加する必要がありました。値は "チェック"する必要があります。コントローラ内またはサービスクラス内の文字列配列の長さを確認できます。

<form action="editCustomer" method="post"> 
 
    <input type="hidden" name="checkboxName" value="checked"> 
 
    <input type="checkbox" name="checkboxName"/> 
 
</form>

@RequestMapping(value = "/editCustomer" , method = RequestMethod. POST) 
 
\t public void editCustomer(@RequestParam("checkboxName")String[] checkboxValue) 
 
\t { 
 
\t \t if(checkboxValue.length==2) 
 
     \t { 
 
      \t System.out.println("checkbox is checked"); 
 
     \t } 
 
\t \t else 
 
     \t { 
 
      \t System.out.println("checkbox is not checked"); 
 
     \t } 
 
\t }

0

私は同じ問題を抱えていたと私は最終的には簡単な解決策を見つけました。

デフォルト値をfalseに追加するだけで完全に機能します。

HTMLコード:

<form action="path" method="post"> 
    <input type="checkbox" name="checkbox"/> 
</form> 

Javaコード:

@RequestMapping(
    path = "/path", 
    method = RequestMethod.POST 
) 
public String addDevice(@RequestParam(defaultValue = "false") boolean checkbox) { 
    if (checkbox) { 
     // do something if checkbox is checked 
    } 

    return "view"; 
} 
関連する問題