首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何解决Spring3.0MVC中“mediaType”不能为空错误的问题?

如何解决Spring3.0MVC中“mediaType”不能为空错误的问题?
EN

Stack Overflow用户
提问于 2018-05-03 20:32:49
回答 2查看 1.5K关注 0票数 0

如何解决Spring3.0MVC中的mediaType不能为空错误?我们的要求之一是为移动应用程序实现“支持通用链接”:

文件路径应该是:http://localhost:9080/.well-known/apple-app-site-association,当我请求URL https://localhost:9080/.well-known/apple-app-site-association时,我们得到以下错误:

错误:

代码语言:javascript
运行
复制
[5/7/18 10:54:38:776 EDT] 00000125 SystemOut     O 2018-05-07 10:54:38,757 ERROR PageController - Exception while processing request for: /.well-known/apple-app-site-association
java.lang.IllegalArgumentException: 'mediaType' must not be empty
    at org.springframework.util.Assert.hasLength(Assert.java:136) ~[spring-core-3.1.4.RELEASE.jar:3.1.4.RELEASE]
    at org.springframework.http.MediaType.parseMediaType(MediaType.java:687) ~[spring-web-3.1.4.RELEASE.jar:3.1.4.RELEASE]
    at com.sdl.webapp.common.impl.interceptor.StaticContentInterceptor.fallbackForContentProvider(StaticContentInterceptor.java:79) ~[dxa-common-impl-1.5.0.jar:1.5.0]
    at com.sdl.webapp.common.impl.interceptor.StaticContentInterceptor.preHandle(StaticContentInterceptor.java:111) ~[dxa-common-impl-1.5.0.jar:1.5.0]
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:914) ~[spring-webmvc-3.1.4.RELEASE.jar:3.1.4.RELEASE]
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) ~[spring-webmvc-3.1.4.RELEASE.jar:3.1.4.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) ~[spring-webmvc-3.1.4.RELEASE.jar:3.1.4.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) ~[spring-webmvc-3.1.4.RELEASE.jar:3.1.4.RELEASE]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:575) [javax.j2ee.servlet.jar:na]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:668) [javax.j2ee.servlet.jar:na]

我的控制器:

代码语言:javascript
运行
复制
package com.sdl.webapp.main.controller;

import com.sdl.webapp.common.api.WebRequestContext;
import com.sdl.webapp.common.api.localization.Localization;
import com.sdl.webapp.common.api.localization.LocalizationResolver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.*;

@Controller
public class AdminController
{
  private static final Logger LOG = LoggerFactory.getLogger(AdminController.class);
  private String successView;
  @Autowired
  private WebRequestContext webRequestContext;
  @Autowired
  private LocalizationResolver localizationResolver;

  public AdminController() {}

  @RequestMapping(method=RequestMethod.GET, value="/.well-known/apple-app-site-association", headers="content-type=application/json", produces = "application/json", consumes = "application/json")
  public String getHeaders(@RequestHeader(value="Content-Type", required=false, defaultValue="application/json") String ContentType, @RequestHeader(value="Accept", defaultValue="application/json") String accept)
  {
    Localization localization = webRequestContext.getLocalization();

    LOG.trace("ContentType : " + ContentType);

    return localization.getPath() + "/.well-known/apple-app-site-association";
  }
}
EN

回答 2

Stack Overflow用户

发布于 2018-05-03 21:31:07

在为“/.人所共知/苹果-应用-站点-关联”的请求映射中,您指定的请求头参数为“Content”,但是没有提供请求。

尝试使用以下方法签名:

代码语言:javascript
运行
复制
public String getHeaders(@RequestHeader(value="Content-Type", required=false) String ContentType)

代码语言:javascript
运行
复制
public String getHeaders(@RequestHeader(value="Content-Type", defaultValue="some value") String ContentType)

RequestHeader注释的可能元素是defaultValue、名称、必需和值。

票数 0
EN

Stack Overflow用户

发布于 2018-05-03 22:06:50

将生产类型添加到@RequestMapping()

例子:

代码语言:javascript
运行
复制
produces = MediaType.APPLICATION_JSON_VALUE
produces = MediaType.TEXT_PLAIN_VALUE
produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.TEXT_PLAIN_VALUE}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50163436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档