我æ£åœ¨ä»ŽREST APIå‘SI消æ¯é€šé“å‘é€æ¶ˆæ¯ï¼Œè¯¥æ¶ˆæ¯é€šé“委托给å‘é€æ¶ˆæ¯é€‚é…器。消æ¯é€‚é…器å‘TCP客户端å‘é€æ¶ˆæ¯ã€‚什么都ä¸éœ€è¦è¿”回/回应。我的TCP客户端æˆåŠŸæ”¶åˆ°æ¶ˆæ¯ï¼Œä½†MVC控制器抛出异常
控制器代ç
@Autowired
MessageChannel invokeChannel;
@RequestMapping(value="/invoke/{payload}")
public ResponseEntity<String> sayHello(@PathVariable String payload)
{
//trigger gateway to send a message
MessagingTemplate template = new MessagingTemplate();
template.send(invokeChannel, new GenericMessage<String>(payload));
return new ResponseEntity<String>(payload, HttpStatus.OK);
}
例外
 Âjava.lang.IllegalArgumentException:找ä¸åˆ°è¿”回的转æ¢å™¨   type的类型:class java.lang.String     org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:178)     org.springframework.web.servlet.mvc.method.annotation.HttpEntityMethodProcessor.handleReturnValue(HttpEntityMethodProcessor.java:183)     org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:80)     org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:126)     org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:814)     org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:737)     org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)     org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)     org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)     org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:969)     org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:860)     javax.servlet.http.HttpServlet.service(HttpServlet.java:622)     org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:845)     javax.servlet.http.HttpServlet.service(HttpServlet.java:729)     org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
æˆ‘æ— æ³•æ‰¾åˆ°å¯¼è‡´æ¤é—®é¢˜çš„åœ°ç‚¹å’ŒåŽŸå› ã€‚æˆ‘çš„return new ResponseEntity(...)
æ–点未到达。
我的webmvcconfig
@EnableWebMvc
@Configuration
@ComponentScan({ "helloworldmvc" })
public class WebappConfig extends WebMvcConfigurerAdapter {
@Bean
public static PropertySourcesPlaceholderConfigurer propertyConfigIn() {
return new PropertySourcesPlaceholderConfigurer();
}
@Override
public void configureMessageConverters(
List<HttpMessageConverter<?>> converters) {
converters.add(new MongoMessageConverter());
}
}
ç”案 0 :(得分:1)
 Â//触å‘网关å‘é€æ¶ˆæ¯
您应确ä¿template.send(invokeChannel)
çš„æµé‡ç¡®å®žå•å‘。没有一个门户å¯ä»¥ç‰å¾…那里的ä¾èµ–ã€‚è¿™æ˜¯ä½ çš„è¯„è®ºï¼š
 Â我的
return new ResponseEntity(...)
æ–点未到达。
å¦‚æžœæ‚¨æ— æ³•è®¿é—®è¯¥è¡Œä»£ç ,请å°è¯•å®Œå…¨è°ƒè¯•AbstractMessageConverterMethodProces
。并且需è¦å¼„清楚代ç 之åŽproducibleMediaTypes
çš„åŽŸå› ï¼š
List<MediaType> producibleMediaTypes = getProducibleMediaTypes(servletRequest, clazz, type);
if (value != null && producibleMediaTypes.isEmpty()) {
throw new IllegalArgumentException("No converter found for return value of type: " + clazz);
}
是空的。也许您请求使用一些与Stringä¸å…¼å®¹çš„Accept
ï¼Ÿæˆ–è€…ä½ çš„WebMvcConfigurer
以æŸç§æ–¹å¼è¦†ç›–List<HttpMessageConverter<?>> converters
没有任何String-awere转æ¢å™¨ï¼Ÿ
ç”案 1 :(得分:1)
错误讯æ¯ï¼š
 Â找ä¸åˆ°ç±»åž‹ä¸ºï¼šclass java.lang.String
的返回值的转æ¢å™¨
它说MVCä¸çŸ¥é“哪个converter
用æ¥ä»Žè¿™ä¸ªæœåŠ¡è¿”回RESTå“应。使用春天å¯ç”¨çš„默认转æ¢å™¨ã€‚
 Â请在方法ç¾åä¸æ·»åŠ 注释
@ResposeBody
。