我有一个如下控制器
@Controller
public class SettingsController {
@RequestMapping(value="/editname",method=RequestMethod.POST)
public void editName(@RequestParam(value="firstname") String firstname,
@RequestParam(value="lastname") String lastname) {
final Object principal =
SecurityContextHolder.getContext().getAuthentication().getPrincipal();
try {
jdbcPersonRepository.updateName(principal.toString(), firstname, lastname);
} catch (SignInNotFoundException e) {
}
}
}
我提交了我的ajax表单。
$(function() {
//twitter bootstrap script
$("button#submit").click(function(){
var $form = $(this).closest("form");
var type = $form.attr('method');
$.ajax({
type: $form.attr('method'),
url: $form.attr('action'),
data: $form.serialize(),
dataType : "json",
success: function(msg){
$("#thanks").html(msg)
$("#form-content").modal('hide');
},
error: function(){
//alert("failure");
}
});
});
});
我的twitter bootstrap模型有一个触发ajax的形式如下
<!-- Name Edit div -->
<div id="form-content" class="modal hide fade in" tabindex="-1">
<form name="edit-form" action="<c:url value="/editname" />" method="post">
<div class="modal-header">
<h4>Edit Name</h4>
</div>
<div class="modal-body">
<div class="control-group">
<div class="controls">
<ul class="nav nav-list">
<li class="nav-header">First Name</li>
<li><input type="text" placeholder="First Name" name="firstName" id="firstName" class="input-xlarge help-inline"></li>
<li class="nav-header">Last Name</li>
<li><input type="text" placeholder="Last Name" name="lastName" id="lastName" class="input-xlarge help-inline"></li>
</ul>
</div>
</div>
</div>
<div class="modal-footer">
<button id="submit" class="btn btn-success">Update</button>
<button class="btn" data-dismiss="modal" >Close</button>
</div>
</form>
</div>
是否有任何人对此错误有所了解。 ?
答案 0 :(得分:4)
在方法声明中,@RequestMapping
注释将参数名称指定为firstname
和lastname
。在格式HTML中,它们是firstName
和lastName
。
请求参数名称区分大小写... ergo,它们不匹配,Spring告诉您这是一个无效请求,因为缺少必需参数。