2016-05-21 98 views
1

問題是如果未選中複選框,請求無法在springMVC控制器中找到正確的映射函數。因爲它看起來好像只發送真值,如果它被選中,但如果未檢查,則不發送錯誤值。如何在spring mvc控制器中接收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

我解決了類似的問題,在@RequestMapping指定required = false。 通過這種方式,如果複選框沒有在表格中被選中,或者如果選中了"on",參數checkboxValue將被設置爲null

@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"; 
} 
相關問題