我使用velocity,jQuery和Spring将值从html表单发送到Java控制器,然后将它们保存到数据库。 不幸的是它很奇怪。首次单击按钮后,不会发送任何请求,而是将表单中的值添加到url作为参数。 第二次尝试后,只有当我使用相同的值填充表单时,post才能正确发送到控制器,一切正常。
这是代码:
HTML
#set( $actionURL = $renderResponse.createResourceURL() )
$actionURL.setParameter("action", "save")
#set($captchaUrl = $renderResponse.createResourceURL() + "&p_p_resource_id=captcha")
<form action="$actionURL" novalidate="novalidate">
...
<input type="submit" class="btn-plain-green-big contact-form-send-button" value="Wyślij">
</form>
的jQuery
initSubmit :function(){
jQuery('#contactFormOut form').unbind('submit');
jQuery('#contactFormOut form').submit(function(e){
e.preventDefault(); //STOP default action
//console.log("Submit");
var postData = jQuery(this).serializeArray();
var formURL = jQuery(this).attr("action");
/*if (formURL.indexOf('http:') > -1) {
//formURL = formURL.replace('http:', 'https:');
}
*/
if (jQuery(this).valid()){
//console.log("Submit - validation ok");
jQuery(this).attr("action", "#");
jQuery.ajax(
{
url : formURL,
type: "POST",
data : postData,
cache: false,
success:function(data)
{
var obj = jQuery.parseJSON(data);
if (obj.status == 'OK') {
showOkMessage();
return false;
} else {
if(jQuery('#captchaTest').text() != '') {
jQuery('#captchaTest').text('');
}
return false;
}
},
error: function(data)
{
jQuery.colorbox.close();
}
});
return false;
} else {
//console.log("validation false");
return false;
}
});
}
的java
@RequestMapping(value = "view")
@ResourceMapping
public void save(ResourceRequest resourceRequest, ResourceResponse resourceResponse) throws IOException, PortletException, Exception {
//eveything here works fine and is not important to a problem
}