Skip to content

Using defaultContentType property in ContentNegotiatingViewResolver throws java.lang.UnsupportedOperationException [SPR-6178] #10846

@spring-projects-issues

Description

@spring-projects-issues

Sorin Jucovschi opened SPR-6178 and commented

In my application I have a ContentNegotiatingViewResolver set to handle html , xml and json. Following is the beans declaration:
\

<bean
    class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"
    p:order="1">
    <property name="mediaTypes">
      <map>
        <entry key="html" value="text/html"/>
        <entry key="xml" value="application/xml" />
        <entry key="json" value="application/json" />
      </map>
    </property>
    <property name="defaultViews">
      <list>
        <bean class="org.springframework.web.servlet.view.xml.MarshallingView">
          <property name="marshaller">
            <bean class="org.springframework.oxm.xstream.XStreamMarshaller"
              p:autodetectAnnotations="true" />
          </property>
        </bean>
        <bean
          class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
      </list>
    </property>
    <property name="ignoreAcceptHeader" value="true"/>
    <property name="defaultContentType" value="application/xml"/>
  </bean>

  <bean id="jspViewResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver"
    p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" p:order="2" />

//

As seen in the code I turned off acceptHeader and want to have a default content type of application/xml. When I access the page without an explicit extension I get a java.lang.UnsupportedOperationException:

java.lang.UnsupportedOperationException
at java.util.AbstractList.set(AbstractList.java:115)
at java.util.AbstractList$ListItr.set(AbstractList.java:412)
at java.util.Collections.sort(Collections.java:121)
at org.springframework.web.servlet.view.ContentNegotiatingViewResolver.resolveViewName(ContentNegotiatingViewResolver.java:344)
at org.springframework.web.servlet.DispatcherServlet.resolveViewName(DispatcherServlet.java:1105)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1052)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:808)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:726)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:636)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:545)
...


Affects: 3.0 RC1

Issue Links:

Metadata

Metadata

Assignees

Labels

in: webIssues in web modules (web, webmvc, webflux, websocket)status: duplicateA duplicate of another issue

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions