我正在尝试测试Struts 2操作,结果指向freemarker页面(.ftl)。当我使用Spring框架时,我的测试扩展了StrutsSpringTestCase。我的问题是,在操作执行后,它会搜索结果freemarker页面,但在它获取页面之前,它会将语言环境(在我的情况下为en_GB)附加到ftl页面。因此找不到任何东西。
例如:
操作执行 - 结果页面= login.ftl但搜索login_en_GB.ftl
操作执行 - Result Page = index.ftl但搜索index_en_GB.ftl
我无法弄清楚为什么会这样做或如何改变它。
答案 0 :(得分:0)
我认为您需要做的是在控制器上设置模拟servlet请求。我们在代码中做了类似的事情,但模拟了帖子请求:
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
protected HttpServletRequest httpServletPostRequest = new MockHttpServletRequest("POST", "/");
httpServletPostRequest.addPreferredLocale(yourLocale);
controller.setServletRequest(httpServletPostRequest);
答案 1 :(得分:0)
我用于此问题的解决方法是在执行操作后立即停止该过程。通过这样做我没有充分利用完整功能,但由于显然不支持freemarker,这是我想到的最佳方式。