page contents

springmvc接收前台转换对象失败报错

Pack 发布于 2020-02-13 21:15
阅读 624
收藏 0
分类:Java开发

问题出现的环境背景及自己尝试过哪些方法

前台用axios发对象到后台,如果是普通的类可以成功转化。就是类中字段都是string、boolean这些的。如果类里面包含别的复杂类的对象。转换就失败报错。我试了好久解决不了

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)
后台@RequestMapping(method = RequestMethod.POST, path = “/regist/wss”)
@ResponseBody
public String wss(@RequestBody ReportdevReq ReportdevReq) {

    return "  ";
}### 问题描述

@JsonRootName(“instance”)
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class ReportdevReq extends NewtemplateReq {

^ @JsonProperty(“mysql”)
private MysqlApply mysql;^

@JsonProperty("exportmysql")
private boolean exportmysql;
@JsonProperty("reportdevelop")
private boolean reportdevelop;
@JsonProperty("exportserver")
private boolean exportserver;
@JsonProperty("onedataimport")
private boolean onedataimport;
@JsonProperty("busidataimport")
private boolean busidataimport;
@JsonProperty("datadevelop")
private boolean datadevelop;

public MysqlApply getMysql() {
    return mysql;
}

public void setMysql(MysqlApply mysql) {
    this.mysql = mysql;
}



public boolean isExportmysql() {
    return exportmysql;
}

public void setExportmysql(boolean exportmysql) {
    this.exportmysql = exportmysql;
}

public boolean isReportdevelop() {
    return reportdevelop;
}

public void setReportdevelop(boolean reportdevelop) {
    this.reportdevelop = reportdevelop;
}

public boolean isExportserver() {
    return exportserver;
}

public void setExportserver(boolean exportserver) {
    this.exportserver = exportserver;
}

public boolean isOnedataimport() {
    return onedataimport;
}

public void setOnedataimport(boolean onedataimport) {
    this.onedataimport = onedataimport;
}

public boolean isBusidataimport() {
    return busidataimport;
}

public void setBusidataimport(boolean busidataimport) {
    this.busidataimport = busidataimport;
}

public boolean isDatadevelop() {
    return datadevelop;
}

public void setDatadevelop(boolean datadevelop) {
    this.datadevelop = datadevelop;
}

}

@JsonRootName(“instance”)
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class MysqlApply {
@JsonProperty(“pass”)
private String pass;
@JsonProperty(“clusterName”)
private String clusterName;
@JsonProperty(“currentChooseId”)
private String currentChooseId;
@JsonProperty(“name”)
private String name;
@JsonProperty(“storage”)
private String storage;

public String getPass() {
    return pass;
}

public MysqlApply(String pass, String clusterName, String currentChooseId, String name, String storage) {
    this.pass = pass;
    this.clusterName = clusterName;
    this.currentChooseId = currentChooseId;
    this.name = name;
    this.storage = storage;
}

public void setPass(String pass) {
    this.pass = pass;
}

public String getClusterName() {
    return clusterName;
}

public void setClusterName(String clusterName) {
    this.clusterName = clusterName;
}

public String getCurrentChooseId() {
    return currentChooseId;
}

public void setCurrentChooseId(String currentChooseId) {
    this.currentChooseId = currentChooseId;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getStorage() {
    return storage;
}

public void setStorage(String storage) {
    this.storage = storage;
}

}

后台报错2019-11-18 10:36:38.802 [http-nio-127.0.0.1-38111-exec-3] DEBUG o.s.web.servlet.DispatcherServlet - POST “/regist/wss”, parameters={}
2019-11-18 10:36:38.802 [http-nio-127.0.0.1-38111-exec-3] DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped to public java.lang.String com.huawei.bigdataplatform.cloud.controller.MrsController.wss(com.huawei.bigdataplatform.cloud.jackson.database.ReportdevReq)
2019-11-18 10:36:38.803 [http-nio-127.0.0.1-38111-exec-3] DEBUG o.s.w.s.m.m.a.ServletInvocableHandlerMethod - Could not resolve parameter [0] in public java.lang.String com.huawei.bigdataplatform.cloud.controller.MrsController.wss(com.huawei.bigdataplatform.cloud.jackson.database.ReportdevReq): Type definition error: [simple type, class com.huawei.bigdataplatform.cloud.jackson.database.MysqlApply]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of com.huawei.bigdataplatform.cloud.jackson.database.MysqlApply (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
at [Source: (PushbackInputStream); line: 1, column: 171] (through reference chain: com.huawei.bigdataplatform.cloud.jackson.database.ReportdevReq[“mysql”])
2019-11-18 10:36:38.804 [http-nio-127.0.0.1-38111-exec-3] DEBUG o.s.web.servlet.DispatcherServlet - Failed to complete request: org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class com.huawei.bigdataplatform.cloud.jackson.database.MysqlApply]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of com.huawei.bigdataplatform.cloud.jackson.database.MysqlApply (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
at [Source: (PushbackInputStream); line: 1, column: 171] (through reference chain: com.huawei.bigdataplatform.cloud.jackson.database.ReportdevReq[“mysql”])
2019-11-18 10:36:38.805 [http-nio-127.0.0.1-38111-exec-3] ERROR o.a.c.c.C.[.[.[.[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class com.huawei.bigdataplatform.cloud.jackson.database.MysqlApply]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of com.huawei.bigdataplatform.cloud.jackson.database.MysqlApply (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
at [Source: (PushbackInputStream); line: 1, column: 171] (through reference chain: com.huawei.bigdataplatform.cloud.jackson.database.ReportdevReq[“mysql”])] with root cause
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of com.huawei.bigdataplatform.cloud.jackson.database.MysqlApply (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
at [Source: (PushbackInputStream); line: 1, column: 171] (through reference chain: com.huawei.bigdataplatform.cloud.jackson.database.ReportdevReq[“mysql”])
at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:67)
at com.fasterxml.jackson.databind.DeserializationContext.reportBadDefinition(DeserializationContext.java:1452)
at com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1028)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1297)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:326)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:159)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:369)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:159)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4013)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3084)
at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:239)
at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:227)
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:204)
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:157)
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:130)
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:126)
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:166)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:134)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:800)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:908)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)
at org.apache.catalina.core.StandardContextValve.__invoke(StandardContextValve.java:96)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:41002)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocolConnectionHandler.process(AbstractProtocol.java:836) at org.apache.tomcat.util.net.NioEndpointConnectionHandler.process(AbstractProtocol.java:836)atorg.apache.tomcat.util.net.NioEndpointSocketProcessor.doRun(NioEndpoint.java:1747)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutorWorker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThreadWorker.run(ThreadPoolExecutor.java:624)atorg.apache.tomcat.util.threads.TaskThreadWrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
2019-11-18 10:36:38.805 [http-nio-127.0.0.1-38111-exec-3] DEBUG o.s.web.servlet.DispatcherServlet - “ERROR” dispatch for POST “/error”, parameters={}
2019-11-18 10:36:38.807 [http-nio-127.0.0.1-38111-exec-3] DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped to public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2019-11-18 10:36:38.808 [http-nio-127.0.0.1-38111-exec-3] DEBUG o.s.w.s.m.m.a.HttpEntityMethodProcessor - Using ‘application/json’, given [application/json, text/plain, /] and supported [application/json, application/+json, application/json, application/+json]
2019-11-18 10:36:38.809 [http-nio-127.0.0.1-38111-exec-3] DEBUG o.s.w.s.m.m.a.HttpEntityMethodProcessor - Writing [{timestamp=Mon Nov 18 10:36:38 CST 2019, status=500, error=Internal Server Error, message=Type defin (truncated)…]
2019-11-18 10:36:38.810 [http-nio-127.0.0.1-38111-exec-3] DEBUG o.s.web.servlet.DispatcherServlet - Exiting from “ERROR” dispatch, status 500

是哪里转化失败啊?

347
Pack
Pack

建议看下这段报错信息:
Type definition error: [simple type, class com.huawei.bigdataplatform.cloud.jackson.database.MysqlApply]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of com.huawei.bigdataplatform.cloud.jackson.database.MysqlApply (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)

请先 登录 后评论