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();
}
}