Spring ContentNegotiatingViewResolver - How to use bean name for jsp view not full url with path parameters -


my servlet-context file has

<beans:bean class="org.springframework.web.servlet.view.contentnegotiatingviewresolver">     <beans:property name="usenotacceptablestatuscode"         value="false" />     <beans:property name="contentnegotiationmanager">         <beans:bean             class="org.springframework.web.accept.contentnegotiationmanager">             <beans:constructor-arg>                 <beans:bean                     class="org.springframework.web.accept.pathextensioncontentnegotiationstrategy">                     <beans:constructor-arg>                         <beans:map>                             <beans:entry key="html" value="text/html" />                             <beans:entry key="json" value="application/json" />                         </beans:map>                     </beans:constructor-arg>                 </beans:bean>             </beans:constructor-arg>         </beans:bean>     </beans:property>      <beans:property name="viewresolvers">         <beans:list>             <beans:bean                 class="org.springframework.web.servlet.view.beannameviewresolver"/>             <beans:bean id="jspview"                 class="org.springframework.web.servlet.view.internalresourceviewresolver">                 <beans:property name="prefix" value="/web-inf/jsp/" />                 <beans:property name="suffix" value=".jsp" />             </beans:bean>         </beans:list>     </beans:property>      <beans:property name="defaultviews">         <beans:list>             <beans:bean                 class="org.springframework.web.servlet.view.json.mappingjackson2jsonview" />         </beans:list>     </beans:property> </beans:bean> 

my controller file has

@controller("resources") public class resources {       @requestmapping(value = "/resources/{name}", method = requestmethod.get)      public map getresource(@pathvariable string name) {         return new hashmap();      } } 

but whenever try access /server/resources/myfilename.html

server throws 404 saying /server/web-inf/jsp/resources/myfilename.jsp not found. should load /server/web-inf/jsp/resources.jsp im using beannameviewresolver. please help.

what get:

  • controller return null view name, defaultrequesttoviewnametranslator generates 1 uri = path servlet path without slashes , filename extension: resources/myfilename

  • beannameviewresolver try view context named resources/myfilename, seem fails , chain next viewresolver

  • internalresourceviewresolver return jstlview pointing jsp prefix + viewname + suffix = /web-inf/jsp/resources/myfilename.jsp

so beannameviewresolver seems don't resolve view , return of internalresourceviewresolver expected one.

what want (i think)

you want remove filename default view name, not extension.

  • implements requesttoviewnametranslator , declare in dispatcherservlet context name viewnametranslator.

for example:

public class stripfilenameviewnametranslator extends defaultrequesttoviewnametranslator {      @override     protected string transformpath(string lookuppath) {         string path = super.transformpath(lookuppath);         return  stringutils.substringbeforelast(path, "/");     } } 

Comments

Popular posts from this blog

java - Jmockit String final length method mocking Issue -

asp.net - Razor Page Hosted on IIS 6 Fails Every Morning -

c++ - wxwidget compiling on windows command prompt -