当前位置: 首页 > 知识库问答 >
问题:

Spring:当url包含点和正确扩展名时,无法解析具有名称的视图

陆宏壮
2023-03-14

这是我的控制器

@RequestMapping(value = "/download/{product}/{topic}/{key:.*}")
//@ResponseBody
public AjaxResult download(@PathVariable("product") String product, @PathVariable("topic") String topic,
    @PathVariable("key") String key, HttpServletRequest request, HttpServletResponse response) {
<bean
    class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
    <property name="viewResolvers">
          <list>
            <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/>
        </list>      
    </property>
    <property name="defaultViews">
        <list>
            <bean
                class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" />
        </list>
    </property>
</bean>
<mvc:annotation-driven>
    <mvc:message-converters register-defaults="false">
        <bean id="fastJsonHttpMessageConverter"
            class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
            <property name="supportedMediaTypes">
                <list>
                    <value>text/html;charset=UTF-8</value>
                    <value>text/plain;charset=UTF-8</value>
                    <value>application/json;charset=UTF-8</value>
                </list>
            </property>
            <property name="features">
                <array>
                    <!--<value>WriteMapNullValue</value> -->
                    <value>QuoteFieldNames</value>
                    <value>DisableCircularReferenceDetect</value>
                </array>
            </property>
        </bean>

        <bean id="stringHttpMessageConverter"
            class="org.springframework.http.converter.StringHttpMessageConverter">
            <constructor-arg value="UTF-8" index="0" />
        </bean>
    </mvc:message-converters>
</mvc:annotation-driven>
javax.servlet.ServletException: Could not resolve view with name '/download/product/topic/key' in servlet with name ''
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1227)
    at org.springframework.test.web.servlet.TestDispatcherServlet.render(TestDispatcherServlet.java:105)
org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
    at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:137)
    null

以及访问时使用/download/product/topic/key.txt/,但有没有其他解决方案不会更改@requestmapping和URL中的值?

共有1个答案

何高歌
2023-03-14

将以下conde添加到Spring配置的.xml文件中:

<context:annotation-config/> 
<mvc:annotation-driven />

<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
  <list>
    <ref bean="jacksonMessageConverter"/>
  </list>
</property>
</bean>

您可以尝试将DispatcherServlet添加到web.xml文件中,您可以在下面找到代码:

 <servlet>
        <servlet-name>myServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:ApplicationContext.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>myServlet</servlet-name>
        <url-pattern>/api/*</url-pattern>
    </servlet-mapping>
 类似资料:
  • 问题内容: 我一直在尝试导入以下Web服务:http : //soap.genome.jp/KEGG.wsdl和$ {JAVA_HOME} / bin / wsimport: 但出现以下错误: 问题是来自WSDL还是来自wsimport的实现?我应该使用其他工具吗? 谢谢 皮埃尔 问题答案: 我从此错误报告中发现了(显然是)解决方法:https : //netbeans.org/bugzilla/

  • 我是Spring Boot新手,我在resource文件夹下有文件,,,他们在,,但是如果没有文件扩展名,,,给出了的错误。 请求URI: /loginAjax请求:无状态代码: 500异常类型:类org.thymeleaf.exceptions.模板输入异常消息:请求处理失败;嵌套异常是org.thymeleaf.exceptions.模板输入异常:错误解决模板[登录],模板可能不存在或可能无法

  • 如果我使用OpenSSL创建一个X509证书,该证书使用CA证书签名,并包括X509v3 SAN(主题替代名称)扩展,则生成的证书包含两次SAN扩展,而如果证书是自签名的,则SAN扩展仅出现一次(我会认为正确)。 复制步骤: 之后,如果我输入证书,“X509v3受试者替代名称”部分将打印两次: 如果未使用CA且证书通过以下方式进行自签名,则情况并非如此: 我可以使用OpenSSL 1.0.2n以及

  • 问题内容: 我目前正在编写一个与Chrome扩展程序通信的Java程序。我需要实现Chrome本机消息传递协议才能进行通信。Google Chrome文档说: …每条消息都使用JSON(UTF-8编码)进行序列化,并以本机字节顺序开头32位消息长度。(来源) 我尝试用Java实现此功能,但是即使我的实现应该是正确的,但是当我的消息具有一定长度时,我还是会遇到问题。这是我当前的实现,基于早期的SO-

  • 问题内容: 我在用Maven或Eclipse编译一些Scala时遇到问题,我尝试从Java jar导入一个包含名称空间和同名类的类。 我可以用编译。 例如,Java项目(jar)包含: 编译器抱怨: 在Scala 2.9.0.1(和)中使用Maven 3.0.03 / Eclipse 3.7.1 。 我遇到问题的jar是-它肯定包含几个实例,其中存在同名的名称空间和对象。 我正在尝试在Scala中