- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
Struts ActionContext
在测试期间为 null
。
使用 Struts2 JUnit 插件我进行了以下测试:
public class MainActionIT extends StrutsJUnit4TestCase
{
@Test
public void testAction() {
Map<String, Object> application = new HashMap<String, Object>();
application.put("options","home");
ActionContext.getContext().put("application",application);
ActionProxy proxy = getActionProxy("/home");
String result = proxy.execute();
}
}
两个相关的类如下:
public class MainAction extends BaseAction
{
@Action(value = "/home", results = {@Result(name = "success", location = "home.jsp")})
public String getHome()
{
Map options = getHomeOptions();
return SUCCESS;
}
}
public class BaseAction extends ActionSupport
{
public Map getHomeOptions()
{
return ActionContext.getContext().get("application").get("options");
}
}
我正在尝试使用 HashMap
模拟 ActionContext
的 “application”
对象。
值是在测试中设置的,但是一旦代码在 BaseAction
中执行,这些值就是null
。这里有类似的问题( link ),但在我的例子中答案不正确。
是否正在创建不同的ActionContext
?如果是这样,如何将变量传递给BaseAction
?
最佳答案
ActionContext
在操作执行期间创建。您应该检查此代码来证明这个概念。
@Test
public void shouldAdditionalContextParamsBeAvailable() throws Exception {
// given
String key = "application";
assertNull(ActionContext.getContext().get(key));
// when
String output = executeAction("/home");
// then
assertNotNull(ActionContext.getContext().get(key));
}
@Override
protected void applyAdditionalParams(ActionContext context) {
Map<String, Object> application = new HashMap<String, Object>();
application.put("options","home");
context.put("application", application);
}
关于模板
applyAdditionalParams(ActionContext)
Can be overwrittenin subclass to provide additional params and settings used duringaction invocation
关于java - Struts2 JUnit ActionContext 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25436615/
ActionContext ActionContext是Action的上下文,Struts2自动在其中保存了一些在Action执行过程中所需的对象,比如ses
我的问题是: 在Struts2中,每个action对象都有自己对应的ActionContext和ValueStack吗? 换句话说,对于每个新请求,都会创建一个新的操作对象。这是否意味着每次创建新的操
最近我将 struts2 版本从 2.0.11 更新到了当前的 2.2.3。不幸的是,我现在遇到了一些奇怪的问题,到目前为止我还无法解决。 当我尝试获取 ActionContext 时: Action
我有一个关于 struts2 链接操作的非常复杂的问题,提前感谢您耐心阅读我的问题。我会尽力描述清楚。 下面是我的struts.xml:
我正在尝试在 Struts2 中编写一个拦截器,它根据某些条件将请求重定向到不同的操作。我的拦截器工作正常,如下所示。 public String intercept(ActionInvocati
Struts ActionContext 在测试期间为 null。 使用 Struts2 JUnit 插件我进行了以下测试: public class MainActionIT extends Str
我查了很久这个资料,网上好像没有很多。 为简单起见,我们如何访问 ActionContext通过标签? 基本上我想得到 com.opensymphony.xwork2.ActionContext.lo
我在struts2中使用SessionAware,但是当我获取session的值时它返回null。我的 Action 类和方法是- public class CustomLocation extend
背景: 我想使用通过 Ninject 注入(inject)的 IAuthenticationFilter 实现来验证对我的 Web API 的 POST 请求。要验证请求,我需要访问请求正文。 问题:
我正在使用 cucumber-jvm 在一个以 Struts 2 和 Tomcat 作为我的 Servlet 容器的应用程序上编写验收测试(测试行为)。在我的代码中的某个时刻,我需要从 Struts
在此代码中,我使用 ActionContext 从 Request 对象获取 Session 和 ServletActionContext。我觉得这是一种不好的做法,因为必须仅将 ActionCont
我正在调整 http://displaytag.svn.sourceforge.net/viewvc/displaytag/trunk/displaytag/src/main/java/org/dis
阅读了通过 ActionContext.getContext().getSession() 获取 session 映射与通过注入(inject) session 映射之间的差异之后SessionAwa
我需要设置一个 ServletRequest Struts2 拦截器(不是操作类)中的属性。 ActionContext暴露一个Map控制请求属性,就像它对 session 属性所做的那样? 我看到
我正在通过 maven 运行 JUnit 测试,其中正在测试进行以下调用的 struts 操作 java 方法: // Gets this from the "org.apache.struts2.u
我正在尝试模拟这个 Controller : public IActionResult List() { Response.Headers.Add("contentRange"
我目前正在这样做,但如果找不到 key ,它会抛出异常。 此代码段位于从 ActionFilterAttribute 继承的 Web API 过滤器中,在覆盖方法 OnActionExecuting
我在 Microsoft.AspNetCore.Mvc.Controller 中找不到 ActionContext 在我将我的版本更改为 AspNetCore 1.0.0-preview1 之后 这是
我在 IActionContextAccessor 使用 asp.net core 的内置 DI 容器时遇到一些问题。 IActionContextAccessor.ActionContext 属性在
我需要知道如何创建自定义 IModelBinder在 MVC 4 中,它已被更改。 必须实现的新方法是: bool BindModel(HttpActionContext actionContext,
我是一名优秀的程序员,十分优秀!