我正在尝试以编程方式在 Jetty 中配置 struts2,但是这样做有很多麻烦。
由于这些用于“单元”测试,我不希望使用 spring 或任何其他“DI 框架”。
这就是我所拥有的 - (这是在码头周围使用我的包装器,所以方法调用与码头不太匹配,但你可以很容易地得到这个想法)
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 - 所以我认为这可能是错误的路径......
如果有人这样做,将非常感谢任何线索。
谢谢!!
詹姆士