gpt4 book ai didi

javascript - Spring Portlet Jquery Ajax 发布到 Controller

转载 作者:行者123 更新时间:2023-12-03 09:49:24 26 4
gpt4 key购买 nike

编辑:

开始日期和结束日期是 POJO 中的 joda dateTime,我得到的错误是:

SystemOut     O 14:10:16.040 [WebContainer : 2] DEBUG org.springframework.beans.BeanUtils - No property editor [org.joda.time.DateTimeEditor] found for type org.joda.time.DateTime according to 'Editor' suffix convention
...
SystemOut O Error::Failed to convert property value of type 'java.lang.String' to required type 'org.joda.time.DateTime' for property 'startTimestamp'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [org.joda.time.DateTime] for property 'startTimestamp': no matching editors or conversion strategy found

我也无法编辑 Pojo 并添加 @DateTimeFormat,因为 Pojo 是从 XSD 生成的。我还尝试添加 customObjectMapper,但没有任何效果。任何帮助将不胜感激。

原始问题:

我正在尝试提交表单并将数据发送到 Controller 方法。问题是 ModelAttribute 为空并且没有值。 Spring MVC Portlet + Jsp + Javascript + Jquery + Controller @ResourceMapping

片段:

JSP:

<portlet:resourceURL id="addNewURL" var="addNewURL">
</portlet:resourceURL>

<form:form id="qmat_new_notification_form" action="#" method="POST" modelAttribute="dataObject">
...
<input type="text" class="date-picker" id="start_date">
...
<input type="submit" value="Save" class="button" onclick="addNew()">
</form:form>

Jquery:

function addNew() { 

var dataObject = JSON.stringify({
'startTime': $('#start_date').val(),
'endTime': $('#end_date').val(),
'description': $('#message').val(),
'active': $('#status').val()
});

alert("data::"+dataObject);

$.ajax({
url: "<%=addNewURL%>",
type: 'POST',
contentType: 'application/json',
data: dataObject
}).done(function(json){
alert("Success!");
//more logic
}).fail(function() {
alert("OOPS!");
});
}

Controller :

    @ResourceMapping(value = "addNewURL")
public void addNew(@ModelAttribute(value = "dataObject") Obj n,
BindingResult bindingResult, ResourceRequest request, ResourceResponse response, ModelMap model) {

if (!bindingResult.hasErrors()) {
System.out.println("a:::"+n.getDescription());
}

此 getDescription 为空。另外,如果我使用 request.getParameter("description") 也为空。我缺少什么?请帮忙

最佳答案

您根本不需要使用 JSON 数据。

首先,避免 dataObject 的字符串化:

var dataObject = {...}; // no JSON.stringify call

其次,删除 contentType: 'application/json' 因为它在这种情况下没有意义。

使用 dataObject 作为键/值对和默认的 contentType,POST 请求将被正确构造。

要处理单击和提交事件,我建议使用 jQuery 单击和提交方法:

$("#submit").click(function (event) {
addNew();
event.preventDefault();
});
$("#submit").submit(function (event) {
addNew();
event.preventDefault();
});

我创建了一个 fiddle对于这个问题。

参见jQuery.ajax文档。

关于javascript - Spring Portlet Jquery Ajax 发布到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30922248/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com