2

我正在尝试以编程方式在 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 - 所以我认为这可能是错误的路径......

如果有人这样做,将非常感谢任何线索。

谢谢!!

詹姆士

4

0 回答 0