2011-10-18 36 views
0

我正在編寫春季web應用程序,並且事情進展順利。我試圖編寫一個表單,允許管理員更改一些基本的用戶詳細信息。但是,在提交表單時,我不斷收到一個HTTP 400錯誤,指出客戶端發送的請求「語法不正確」。雖然它沒有提供任何實際有用的信息,但我真的已經查看了所有內容,不知道我可能會做錯什麼。下面是JSP:需要幫助讓春季表單工作

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<%@ taglib prefix="s" uri="http://www.springframework.org/tags"%> 
<%@ taglib prefix="security" uri="http://www.springframework.org/security/tags"%> 
<%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form"%> 

<div align="center"> 
<s:url value="/admin/access" var="access_url" /> 
<sf:form method="POST" modelAttribute="user" dojoType="dijit.form.Form"> 
    <script type="dojo/method" event="onSubmit"> 
    if (!this.validate()) { 
     return false; 
    } 
    return true; 
</script> 
<table> 
    <tr> 
    <td align="right">Username: </td> 
    <td> 
     <sf:input path="username" dojoType="dijit.form.ValidationTextBox" trim="true" required="true"/> 
    </td> 
    </tr> 
    <tr> 
    <td align="right">Password: </td> 
    <td> 
     <sf:input path="password" type="password" dojoType="dijit.form.ValidationTextBox" required="true"/> 
    </td> 
    </tr> 
    <tr> 
    <td align="right">Enabled: </td> 
    <td> 
     Yes<sf:radiobutton path="enabled" value="true" dojoType="dijit.form.RadioButton"/> 
     No<sf:radiobutton path="enabled" value="false" dojoType="dijit.form.RadioButton"/> 
    </td> 
    </tr> 
    <tr> 
    <td align="right">Admin: </td> 
    <td> 
     Yes<sf:radiobutton path="isAdmin" value="true" dojoType="dijit.form.RadioButton"/> 
     No<sf:radiobutton path="isAdmin" value="false" dojoType="dijit.form.RadioButton"/> 
    </td> 
    </tr> 
    <tr> 
    <td align="right" colspan="2"> 
     <button dojoType="dijit.form.Button" type="submit">Submit</button> 
    </td> 
    </tr> 
</table> 
</sf:form> 
</div> 

這裏是最終會被稱爲控制器中的方法,雖然它沒有得到那麼遠:

@RequestMapping(value="/admin/editUser", method=RequestMethod.POST) 
public String submitEditUser(@RequestParam("user") NFIUser nfiUser) { 

,這裏是從同一個控制器的GET映射,雖然形式被正確映射到表單中的所有值完全顯示,所以我不知道有任何這裏的問題:

@RequestMapping(value="/admin/editUser", method=RequestMethod.GET) 
public void showEditUser(Model model, @RequestParam("username") String username) { 
    .... 
    model.addAttribute("user", user); 
} 

無論如何,如果任何人有任何想法,請讓我知道。我已經成功地解決了所有我一整天都遇到的錯誤,但我似乎無法看到這個問題。謝謝。

+1

您的sf:表格標籤沒有任何操作。我認爲你需要在表單的action屬性中放置你的「admin/editUser」。 – jeff

回答

0

原來,答案是所有人都離開這裏的組合。通常對於Spring來說,你不需要一個表單上的動作方法,但在這種情況下,由於我如何加載表單,最終需要覆蓋Spring所加載的動作。

還刪除@RequestParam(「用戶」)位解決了400錯誤的問題。因爲這次我使用了spring form標籤,所以一切都很好地綁定了,我想我不需要RequestParam位。顯然,我還沒有最好的瞭解何時和不需要。

無論如何,我標記了人們的答案,但從技術上講沒有一個是完整的解決方案,所以我發佈了這個。謝謝大家。

1

嘗試刪除@reqiestParam fotm submitEditUser方法。