我正在尝试以编程方式在Jetty中配置struts2,但这样做很麻烦。
由于这些是'单元'测试,我不希望使用spring或任何其他'DI Framework'。
这就是我所拥有的 - (这是使用我在jetty周围的包装器,因此方法调用与Jetty不完全匹配,但你可以很容易地得到这个想法)
JspServlet servlet = new JspServlet();
server.mount("*.jsp", servlet)
.withInitParameter("trimSpaces", "true")
.withInitParameter("mappedFile", "true")
.withInitParameter("classdebuginfo", "true")
.withInitParameter("keepGenerated", "true")
.withInitParameter("development", "true")
.withInitParameter("scratchDir", "./target/scratch");
server.getContextHandler().setResourceBase("some-place/WebContent");
server.filter("/*", new FilterDispatcher())
server.start();
那会失败,抱怨春天没有建立起来。我已经尝试过使用FilterDispatcher的子类,返回一个MockConfiguration等等,但我的确没有取得多大进展......
private static class MyFilterDispatcher extends FilterDispatcher {
private MyFilterDispatcher(ActionMapper mapper) {
setActionMapper(mapper);
}
@Override
protected Dispatcher createDispatcher(FilterConfig filterConfig) {
Dispatcher dispatcher = super.createDispatcher(filterConfig);
ConfigurationManager configurationManager = new ConfigurationManager("filterdispatcher");
configurationManager.setConfiguration(new MockConfiguration());
dispatcher.setConfigurationManager(configurationManager);
return dispatcher;
}
}
那么你必须实现一个ActionMapper,如果你这样做,那么你从你的MockConfiguration获得一个UOE来获取getRuntimeConfiguration - 所以我认为这可能是错误的路径......
如果有人这样做了,我会非常感谢任何线索。
谢谢!
詹姆斯