2017-09-19 4 views
0

Ich habe einige Inhalte, die dynamisch geladen werden müssen in meinem Controller und einige Inhalte, die ich in einer statischen Weise liefern möchte.Wie kann ich annotationsbasiertes RequestMapping mit statischem Inhalt kombinieren?

Momentan muss ich den Pfad des Controllers manuell konfigurieren in dispatcher-servlet.xml, e.G. Die @RequestMapping funktioniert nicht. Wenn ich die <mvc:resources mapping="/static/**" location="/static/" /> Zeile von meinem dispatcher-servlet.xml entferne, wird die Anmerkung wieder richtig gelesen.

Ich habe versucht, die Context-URL für Dispatcher-Servlet in web.xml zu ändern und die statischen Seiten außerhalb der Springs-Steuerelement platzieren, aber das hat auch nicht funktioniert, also habe ich es zurückgesetzt.

Mein Ziel ist es, die urlMapping Bohne von dispatcher-servlet.xml zu entfernen und das durch die Anmerkungen getan haben. Soweit ich das verstanden habe sollte das auch die AbstractController und die handleRequestInternal Teile loswerden.

Was mich verwirrt ist, dass ich nur die Anmerkungen verwenden kann, wenn ich die statische Ressourcen-Linie weglassen.

Hier sind die relevanten übt meines aktuellen Stand:

Dispatcher-servlet.xml

<context:component-scan base-package="some.pkg.containing.controllers" /> 
<mvc:resources mapping="/static/**" location="/static/" /> 
<bean id="viewResolver" 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver" 
    p:prefix="/WEB-INF/jsp/" 
    p:suffix=".jsp" /> 

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
    <property name="mappings"> 
    <props> 
     <prop key="/dashboard/*">dashboardController</prop> 
    </props> 
    </property> 
</bean> 

web.xml

<servlet> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>2</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

-Controller im Paket:

@Controller 
@RequestMapping("/dashboard") 
public class DashboardController extends AbstractController { 
    public ModelAndView getSite() { 
    ModelAndView retVal = new ModelAndView("dashboard_base"); 
    retVal.addObject("url", "/dashboard"); 
    return retVal; 
    } 
    @Override 
    protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception { 
    return getSite(); 
    } 
} 

Antwort

0

Sie müssen es sagen der mvc Teil des Frühlings, dass es auch Ihre Anmerkungen ehren sollte. Also, wenn Sie diese Zeile zu Ihrem dispatcher-servlet.xml hinzufügen, wird es funktionieren:

<mvc:annotation-driven /> 
Verwandte Themen