今天写一个EntityAction,其中有一个功能是获取EntityManager,想来想去觉得直接从applicationContext中获取最方便 免去了自己写setter方法,想好了就来实施啦
public class WebworkEntityAction<E, ID extends Serializable, M extends GenericDao<E, ID>>
extends WebworkActionSupport implements InitializingBean{
protected E entity;
protected ID id;
protected M entityManager;
/**
* 保存实体
*/
protected String save(){
entityManager.save(entity);
return LIST;
}
public void afterPropertiesSet(){
//初始化entityManager
Class managerClass = GenericsUtils.getSuperClassGenricType(getClass(), 2);
//ServletContext sc = this.getSession().getServletContext();
WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
Assert.isTrue(managerClass instanceof Class, "变量managerClass不是Class的实例");
Map beans = context.getBeansOfType(managerClass);
Assert.isTrue(beans != null && beans.size() > 0, "找不到这种类型的bean:" + managerClass.getName());
String beanName = (String)beans.keySet().iterator().next();
entityManager = (M)context.getBean(beanName);
}
public ServletContext getServletContext(){
return ServletActionContext.getServletContext();
}
写罢 运行 testSave() 报告空指针异常 在getServletContext()在这句上
脑子一片空白,焦点集中到getServletContext()方法中 搞了半天没理出个头绪
稍作休息 重新整理逻辑
action初始化步骤如下
1.在spring context中执行构造函数
2.在spring context中执行InitializingBean.afterPropertiesSet()方法(实例初始化结束)
3.经过一系列的拦截器。包括向ActionContext中写入request数据
ok问题的根源已经找到了
我们在afterPropertiesSet中执行了getServletContext()而这时拦截器还没向ActionContext写数据 难怪报空指针异常
这个问题到此结束
另外还有一个问题,
ServletActionContext.getReqest();
方法返回的却不是null,而
ServletActionContext.getReqest().getSession()
;又是null
其实可以作为两类事件来看
request 客户端来的数据
sesssion、 servletcontext 服务端数据
分享到:
相关推荐
整合方面,WebWork与多个开源项目有良好的兼容性,如Spring框架,可以用于依赖注入和事务管理;Hibernate用于数据持久化;Xml-RPC则提供远程过程调用能力。这些集成使WebWork成为构建企业级应用的理想选择。 #### ...
7. **与Spring的集成**:WebWork可以与Spring框架无缝集成,利用Spring的依赖注入和管理服务,进一步提升开发效率。 8. **模板技术**:WebWork可以配合 Velocity 或 FreeMarker 等模板引擎,实现动态页面生成。 9....
在WebWork框架中,模型(Model)负责处理业务逻辑,视图(View)负责展示数据,控制器(Controller)则协调模型和视图,处理用户的请求。这种架构使得代码组织清晰,易于维护和扩展。 1. **安装与配置**: - ...
webwork2.17中文使用手册
1. **配置WebWork**:首先,需要在项目的web.xml中配置WebWork的监听器,并在WebWork的配置文件中定义Action和拦截器。 2. **编写Action类**:创建Action类并实现相应的业务逻辑。 3. **配置拦截器**:根据需要选择...
- **Configuration**:WebWork框架的配置信息存储在XML配置文件中,包括Action的映射、拦截器的定义等。 ### 学习WebWork框架的步骤 想要熟练掌握WebWork框架,以下步骤可能会有所帮助: 1. **理解MVC架构**:...
在本教程中,我们将深入探讨WebWork2的核心概念、功能及其在实际开发中的应用。 WebWork2是Struts的前身,它在Struts的基础上进行了很多改进,比如更强大的动作映射、类型安全的参数绑定以及更优秀的异常处理机制。...
在本例中,我们关注的是使用WebWork框架在Java环境中实现文件上传。WebWork是一个轻量级的MVC(Model-View-Controller)框架,它提供了处理HTTP请求和响应的强大工具,包括文件上传。 首先,我们需要了解WebWork的...
WebWork和Spring是两个在Java Web开发中广泛使用的框架,它们各自有着独特的优点。WebWork以其强大的动作映射和强大的表单验证而著名,而Spring则以其依赖注入和全面的企业级服务支持闻名。将这两个框架整合在一起,...
webwork2中文参考
WebWork 是一个基于Java的MVC(模型-视图-控制器)框架,它在Web应用程序开发中被广泛使用。这个“WebWork 中文API”显然是一份由专家翻译的文档,目的是帮助中国开发者更好地理解和使用WebWork框架。下面将详细阐述...
它使得 Spring 能够处理 WebWork 中的依赖注入。 5. **拦截器(Interceptor)**:WebWork 使用拦截器来处理请求前后的逻辑,这里添加的 `reference-resolver` 拦截器确保了 Action 中的外部引用能在运行时被正确...
WebWork是Java Web开发中的一个框架,它在早期与Struts有着密切的关系,后来成为了Struts2的基础。这个"WebWork入门教程[创建你第一个WebWork action]"将引导你了解如何利用WebWork来构建动态的Web应用程序。让我们...
在"webwork-1.4-src.zip"这个压缩包中,包含了WebWork1.4的源代码,这对于学习和理解WebWork的工作原理以及进行定制开发非常有帮助。 1. **MVC模式**:WebWork1.4遵循MVC架构,将应用程序分为模型、视图和控制器三...
WebWork 是一个基于 Java 的开源 MVC(Model-View-Controller)框架,它在早期的 Web 应用开发中非常流行,尤其是在 Struts 1 之前。WebWork 提供了强大的动作(Action)处理、类型转换、拦截器(Interceptor)机制...
3. XWork:WebWork的底层框架,负责对象管理、依赖注入、事务控制等功能。XWork提供了一套强大的映射机制,使得Action的配置和调用更加简单。 4. OGNL(Object-Graph Navigation Language):WebWork使用OGNL作为...
3. **视图与模板**:探讨JSP、FreeMarker或其他模板引擎在WebWork2中的使用,解释如何创建和管理视图组件,以及如何通过OGNL(Object-Graph Navigation Language)表达式在视图中访问模型数据。 4. **模型**:讨论...
Spring 和 WebWork 的集成是将 Spring 框架的依赖注入和管理能力与 WebWork(现在是 Struts 2 的一部分)的 MVC 框架相结合的过程。这种集成允许开发者利用 Spring 提供的服务,如数据访问对象(DAO)、业务服务以及...
通过Spring的依赖注入功能,可以更方便地管理和配置WebWork中的组件,简化了应用程序的开发和维护工作。 #### 配置与快速入门 WebWork 2.0的配置相对简洁,主要通过XML配置文件来描述Action、拦截器和其他组件。...
webwork 2.2.6 中文版本,然后编译生成chm格式,方面查看。