【发布时间】:2011-08-12 16:56:13
【问题描述】:
我正在使用 spring 3.0 以及 ajax 和 JSON,所以我有下一个域类:
public class WebSite {
int id;
String description;
SimpleType type;
//getters and setters ...
//...
}
SympleType 类是:
public class SimpleType {
int id;
//getter and setters...
//...
}
所以我为我的第一个域类创建了一个控制器,它是这样的:
@Controller
@RequestMapping(value="/web")
public class PaginaWebController {
@RequestMapping(method=RequestMethod.GET)
public String getCreateForm(Model model) {
model.addAttribute(new WebSite());
return "web/addWeb";
}
@RequestMapping(method=RequestMethod.POST)
public @ResponseBody Map<String, ? extends Object> create(@RequestBody WebSite webSite, HttpServletResponse response) {
System.out.println("I'm here");
return null;
}
}
在我的“addWeb”视图中,我有以下内容:
<%@ page session="false" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<html>
<head>
<title>Create Web</title>
<script type="text/javascript" src="<c:url value="/resources/jquery-1.4.min.js" /> "></script>
<script type="text/javascript" src="<c:url value="/resources/json.min.js" /> "></script>
</head>
<body>
<h1>
Create Web
</h1>
<form:form modelAttribute="paginaWeb" action="web" method="post">
<fieldset>
<legend>Account Fields</legend>
<p>
<form:label id="idLabel" for="id" path="id" cssErrorClass="error">ID</form:label><br/>
<form:input path="id" /><form:errors path="id" />
</p>
<p>
<form:label for="descripcion" path="descripcion" cssErrorClass="error">descripcion</form:label><br/>
<form:input path="descripcion" /><form:errors path="descripcion" />
</p>
<p>
<form:label for="tipo" path="tipo" cssErrorClass="error">Tipo:</form:label><br/>
<form:input path="tipo" /><form:errors path="tipo" />
</p>
<p>
<input id="create" type="submit" value="Create" />
</p>
</fieldset>
</form:form>
</body>
<script type="text/javascript">
$(document).ready(function() {
$("#paginaWeb").submit(function() {
var account = $(this).serializeObject();
$.postJSON("web", account, function(data) {
//some useful code goes here...
//...
});
return false;
});
});
</script>
</html>
所以,我使用 JSON 将表单发布到控制器,但它不起作用,当我按下提交时,我得到下一个错误:
WARNING: StandardWrapperValve[Spring MVC Dispatcher Servlet]: PWC1406: Servlet.service() for servlet Spring MVC Dispatcher Servlet threw exception
org.codehaus.jackson.map.JsonMappingException: Can not construct instance of org.springframework.samples.mvc.ajax.account.SimpleType, problem: no suitable creator method found
at [Source: org.apache.catalina.connector.CoyoteInputStream@f624f7; line: 1, column: 33]
at org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:160)
at org.codehaus.jackson.map.deser.StdDeserializationContext.instantiationException(StdDeserializationContext.java:214)
at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromString(BeanDeserializer.java:533)
at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:355)
...
有人可以帮帮我吗?我真的被困在这个了。任何帮助将不胜感激。
干杯!
【问题讨论】:
标签: ajax json model-view-controller spring jackson