Konfigurieren web.xml für mehrere url-Muster für sitemesh-filter. ich glaube, ich bin mit der servlet-api 2.5
ich habe gekämpft, um mehrere ulr-Muster für eine web-site mit Spring mvc 3.0.5 sitemesh 2.4.2.mein container ist tomcat 6.0.26 meine pom sieht wie folgt aus:
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.14</version>
</dependency>
<dependency>
<groupId>opensymphony</groupId>
<artifactId>sitemesh</artifactId>
<version>2.4.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
ich bin mit einer anderen view-Technologie, die ZK für die admin-Seite der Anwendung.
sitemesh ist aufpassen sollen /site/*
und lassen Sie die /admin/*
alle war gut, bis diese Woche wollte ich hinzufügen, mobile wap-anzeigen für die app.bin weder Website umleiten der Art m.mysite.com
oder mysite.mobi
ich bin nur mit spring mvc
Anfrage mapping zu haben /wap/*
die den gleichen Controller und action als /site/*
. also mein problem wäre sagen sitemesh zu handhaben /wap/*
zu.
meine web.xml sieht wie folgt aus:
<servlet>
<servlet-name>sitemesh-freemarker</servlet-name>
<servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>
<init-param>
<param-name>TemplatePath</param-name>
<param-value>/WEB-INF/ui/views</param-value>
</init-param>
<init-param>
<param-name>NoCache</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>ContentType</param-name>
<param-value>text/html; charset=UTF-8</param-value>
<!-- Forces UTF-8 output encoding! -->
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- FreeMaker section -->
<servlet-mapping>
<servlet-name>sitemesh-freemarker</servlet-name>
<url-pattern>*.ftd</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>sitemesh-freemarker</servlet-name>
<url-pattern>*.ftl</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>sitemesh-freemarker</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>sitemesh-freemarker</servlet-name>
<url-pattern>*.dec</url-pattern>
</servlet-mapping>
<!-- End FreeMaker section -->
<!-- Sitemesh -->
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>
</filter>
<!-- Sitemesh -->
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>/site/*</url-pattern> <!--this is decorated-->
<url-pattern>/wap/*</url-pattern> <!--this is not -->
<!--<dispatcher>FORWARD</dispatcher>-->
<!--<dispatcher>REQUEST</dispatcher>-->
</filter-mapping>
<!--this bellow doesn't work as page not decorated-->
<!--<filter-mapping>-->
<!--<filter-name>sitemesh</filter-name>-->
<!--<url-pattern>/wap/*</url-pattern>-->
<!--</filter-mapping>-->
<!-- End of Sitemesh -->
Laut coderanch beide sollen arbeiten, obwohl es nicht über sitemesh. Ich denke, es spielt keine Rolle, da siteMeshFilter
implementiert javax.servlet.Filter
dies ist mein HomeController Aktion
@RequestMapping("/")
public String index(HttpServletRequest request) {
final org.springframework.mobile.device.Device device = DeviceUtils.getCurrentDevice(request);
if(device.isMobile()){
return "redirect:/site/waphome";
} else {
return "redirect:/site/home";
}
}
@RequestMapping(value = {"/site","/site/home","/site/home","/wap","/wap/","/wap/home"})
public String home(Model model, HttpServletRequest request, HttpSession session) {
final org.springframework.mobile.device.Device device = DeviceUtils.getCurrentDevice(request);
//....
if(device.isMobile()){
return "waphome";
} else {
return "home";
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Never mind, ich habe vergessen, das Muster in der decorator.xml