我試圖讓Tapestry和DispatcherServlet在我的應用程序內共存,但這使我瘋狂。我知道我必須在web.xml中定義Servlet,爲它分配一個URL,因爲Tapestry被分配到/*
我必須排除Tapestry AppModule中的Servlet URL。如何映射DispatcherServlet on/foo/* Tapestry映射到/ *
public static void contributeIgnoredPathsFilter(
final Configuration<String> configuration) {
configuration.add("/bots/.*");
}
然後,在web.xml我有我的servlet定義
<!-- Restlet adapter -->
<servlet>
<servlet-name>BotService</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>BotService</servlet-name>
<url-pattern>/bots/*</url-pattern>
</servlet-mapping>
而且如果它的事項,在applicationContext.xml中的相關配置進行到此已經設置這樣
<mvc:annotation-driven/>
<context:component-scan base-package="com.viktortech.automaton.rest" />
當然模式是可以的,因爲碼頭和Dispatcher Servlet啓動完美無缺。問題是,沒有問題我如何定義@RequestMapping註釋值,我什麼也沒得到,但404的努力達到我的控制器類(這是com.viktortech.automaton.rest
包下的所有定義。
@Controller
public class WelcomeController {
@ResponseBody
@RequestMapping(value = "/bots/", method = RequestMethod.GET, headers = "Accept=*")
public String plaintext(HttpServletResponse response) {
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
return "HELLO";
}
}
我在做什麼錯在這裏? 在此先感謝
要下手,具體談談你認爲你已經嘗試了映射,隨着一切整個GET請求你嘗試過的轉儲(例如,顯示的代碼,它會在'/ bots/bot /')。你有沒有嘗試刪除'method'和'headers'的縮小說明符?您是否在日誌中確認控制器實際上正在加載? – chrylis 2014-08-27 10:07:34
對我而言,我並不瞭解url映射是如何工作的,簡單樸實,我嘗試了一些關於通配符和絕對路由的內容,但從未想過servlet定義中的指定url將提供部分路由給映射,我只是認爲我的行爲像一個正則表達式來匹配。 – Trigork 2014-08-27 10:19:48