如何在Struts2中获取ActionForm?

时间:2014-12-16 10:25:46

标签: java struts2 nullpointerexception actionform

我正在将Struts 1应用程序迁移到Struts2并尝试最小化所需的代码更改。 我需要知道如何访问Struts2 Action类中的ActionForm。以下是我当前的代码,我在尝试访问ActionForm时获得了NPE。

Public class DeptBuildingNewAction extends ActionSupport 
implements ServletRequestAware, ServletResponseAware,  ModelDriven<DeptBuidingFormBean> {

private HttpServletRequest request;
private HttpServletResponse response;
private DeptBuidingFormBean form;

public void setServletRequest(HttpServletRequest httpServletRequest) {
    this.request = httpServletRequest;
}

public void setServletResponse(HttpServletResponse httpServletResponse) {
    log.debug("Inside setServletResponse");
    this.response = httpServletResponse;
}

public DeptBuidingFormBean getModel() {
    log.debug("Inside getForm");
    return form;
}

public void setModel(DeptBuidingFormBean form) {
    log.debug("Inside setForm");
    this.form = form;
}

ActionForm放在这里的最佳方式是什么?谢谢你的时间。

1 个答案:

答案 0 :(得分:1)

应初始化表单(Struts2中的模型)以防止NPE。

private DeptBuidingFormBean form = new DeptBuidingFormBean();

ModelDriven操作允许直接从值堆栈访问视图层上的模型并执行操作,即没有modelform前缀。 modelDriven拦截器应位于动作的拦截器堆栈上。默认堆栈包含此拦截器。

来自文档:

  

注意:当{strong>不是null 时,ModelDrivenInterceptor只会将模型推入堆栈,否则会被忽略。

在动作类中,你有一个可以在里面使用的字段。