JavaEE アプリケーションがあり、ユーザーをデータベースに追加するための jquery フォームがあります。fiekd 値を Spring コントローラーに送信しましたが、何らかの理由でデータが送信されません。どうした?
ログに次の例外が表示されます
java.lang.IllegalStateException: Could not find @PathVariable [login] in @RequestMapping
形
<div id="dialog-form" title="Create new user">
<p class="validateTips">All form fields are required.</p>
<form:form action="${pageContext.request.contextPath}/test" method="post">
<fieldset>
<label for="login">Login</label>
<input type="text" name="login" id="login" class="text ui-widget-content ui-corner-all" />
<label for="password">Password</label>
<input type="text" name="password" id="password" value="" class="text ui-widget-content ui-corner-all" />
<label for="email">Email</label>
<input type="text" name="email" id="email" value="" class="text ui-widget-content ui-corner-all" />
</fieldset>
</form:form>
</div>
<button id="create-user">Add user</button>
脚本
$( "#dialog-form" ).dialog({
autoOpen: false,
height: 600,
width: 350,
modal: true,
buttons: {
"Create an account": function() {
var login = $( '#login' );
var email = $( '#email' );
var password = $( '#password' );
$.ajax({
type: "POST",
url: "${pageContext.request.contextPath}/test",
data: "login=" + login + "&email=" + email + "&password="+ password,
success: function(){
$( this ).dialog( "close" );
}
})
コントローラ
@RequestMapping(value="/test", method=RequestMethod.POST)
@ResponseBody
public void test(@PathVariable String login, @PathVariable String password, @PathVariable String email) {
User user = new User();
user.setLogin(login);
user.setPassword(password);
user.setEmail(email);
userService.create(user);
}