【问题标题】:Testing Struts 2 actions, result type freemarker测试 Struts 2 动作,结果类型 freemarker
【发布时间】:2012-06-04 10:38:06
【问题描述】:
我正在尝试测试指向 freemarker 页面 (.ftl) 的 Struts 2 操作。当我使用 Spring 框架时,我的测试扩展了 StrutsSpringTestCase。我的问题是,在操作执行之后,它会搜索结果 freemarker 页面,但在它获取页面之前,它将语言环境(在我的情况下为 en_GB)附加到 ftl 页面。因此一无所获。
例如:
操作执行 - 结果页面 = login.ftl 但搜索 login_en_GB.ftl
动作执行 - 结果页面 = index.ftl 但搜索 index_en_GB.ftl
我不知道它为什么这样做或如何改变它。
【问题讨论】:
标签:
spring
junit
struts2
locale
freemarker
【解决方案1】:
我认为您需要做的是在控制器上设置一个模拟 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);
【解决方案2】:
我用于此问题的解决方法是在执行操作后立即停止进程。这样做我并没有利用全部功能,但由于显然不支持 freemarker,这是我想到的最佳方式。