`
fslingmo
  • 浏览: 26649 次
  • 性别: Icon_minigender_2
  • 来自: 厦门
社区版块
存档分类
最新评论

struts 使用POJO应注意的一点

阅读更多

对于提交数据比较多的表单,为了避免大量地在FormBean里面使用大量的变量及setter和getter方法,从Struts1.2和Struts1.3起,FormBean中可以使用POJO,提交数据后将直接把数据赋给POJO。

 

 

public class UserBeanForm extends ActionForm {
	private Person person = new Person();
	private String action;
	public Person getPerson() {
		return person;
	}
	public void setPerson(Person person) {
		this.person = person;
	}
	public String getAction() {
		return action;
	}
	public void setAction(String action) {
		this.action = action;
	}

 

 

提示:Struts不会自动创建POJO对象,这里需要用new实例化一个Person对象,否则为Person设置属性时,结合jsp页面会抛出以下错误:

 

 

严重: Servlet.service() for servlet [jsp] in context with path [/struts1] threw exception [javax.servlet.ServletException: javax.servlet.jsp.JspException: Invalid argument looking up property: "person.name" of bean: "org.apache.struts.taglib.html.BEAN"] with root cause
javax.servlet.jsp.JspException: Invalid argument looking up property: "person.name" of bean: "org.apache.struts.taglib.html.BEAN"
	at org.apache.struts.taglib.TagUtils.lookup(TagUtils.java:887)
	at org.apache.struts.taglib.html.BaseFieldTag.prepareValue(BaseFieldTag.java:123)
	at org.apache.struts.taglib.html.BaseFieldTag.renderInputElement(BaseFieldTag.java:102)
	at org.apache.struts.taglib.html.BaseFieldTag.doStartTag(BaseFieldTag.java:80)
	at org.apache.jsp.userInfo_jsp._jspx_meth_html_005ftext_005f0(userInfo_jsp.java:224)
	at org.apache.jsp.userInfo_jsp._jspx_meth_html_005fform_005f0(userInfo_jsp.java:148)
	at org.apache.jsp.userInfo_jsp._jspService(userInfo_jsp.java:116)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
	at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1824)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)

 

看似是jsp的错误,但是实际上是没有创建POJO的错误。

分享到:
评论

相关推荐

    Struts2 Pojo(六)

    Struts2使用值栈管理Action实例和Pojo属性。当用户请求到达时,Struts2会自动将请求参数绑定到Action的Pojo属性上,这个过程称为数据驱动(Data Binding)。值栈允许在Action之间共享数据,同时也支持动态方法调用...

    java Pojo转Map

    在这个工具类中,我们使用反射API来获取Pojo类的所有字段,然后将这些字段的名称作为Map的键,字段的值作为对应的值。注意,这个方法只处理当前类的字段,如果Pojo类中有嵌套的其他Pojo对象,它们不会被自动展开。若...

    struts1和struts2的区别

    - **Struts1**: 使用Commons-BeanUtils进行数据绑定,每一个表单字段都需要单独处理。 - **Struts2**: 使用OGNL进行数据绑定,支持更高级的数据绑定操作。 #### 验证机制 - **Struts1**: 支持ActionForm的内置...

    Struts2与Struts1区别

    ActionSupport 类则提供了常用功能的实现,但 Action 接口并非强制,任何包含 execute 方法的普通 Java 对象(POJO)都能作为 Struts2 的 Action。 2. **线程模型**: - Struts1 的 Action 实例是单例的,这意味着...

    再改struts1.2.*,让struts1再焕发表春,支持Annotation和POJO风格的Action

    然而,通过一些改进和扩展,我们可以使Struts1再次焕发活力,支持注解和POJO风格的Action,以适应现代开发的需求。 首先,让我们深入理解Struts1的核心概念: 1. **Action类**:在传统的Struts1中,Action类是处理...

    数据表生成pojo

    - POJO类应遵循JavaBean规范,提供默认构造函数以及getter和setter方法。 - 需要处理特殊数据类型,如日期、枚举等,确保数据转换正确无误。 - 当数据库表结构变化时,记得同步更新对应的POJO类。 综上所述,...

    struts1.0和struts2

    此外,Struts2的ActionSupport基类提供了对常用接口的实现,使得Action对象的创建更加灵活,不再局限于Action接口,任何具有execute方法的POJO对象都可以作为Struts2的Action对象。 线程模型方面,Struts1采用单例...

    struts2 与 struts1的区别

    值得注意的是,在Struts2中,Action接口并不是强制性的,任何包含`execute`标记的方法所在的POJO都可以用作Action对象。 #### 二、线程安全模型 - **Struts1** 中的Action采用的是单例模式,这意味着对于所有的...

    Mybatis生成pojo插件

    这个插件的使用极大地减少了手动编写POJO类的工作量,使得开发者可以更专注于业务逻辑。同时,它还可以自定义生成的代码风格,适应不同的编码规范。对于大型项目,这无疑提高了开发效率,降低了出错的可能性。 除了...

    struts1和struts2区别

    - **Struts2**:Action类可以实现Action接口或者直接使用ActionSupport基类,也可以是任何具有`execute`方法的普通Java对象(POJO),这增加了代码的可定制性和可扩展性。 2. **线程模式**: - **Struts1**:...

    struts1和struts2的区别(详细)

    此外,Struts2支持POJO风格的Action,即普通的Java对象也可以作为Action使用。 #### 二、依赖于Servlet API的程度不同 - **Struts1**: 在Struts1中,Action直接依赖于Servlet API,如`HttpServletRequest`和`...

    转:struts1与struts2的区别

    值得注意的是,在Struts2中,Action接口并不是必需的,任何包含`execute`标记的POJO(Plain Old Java Object)对象都可以作为Action对象使用。 #### 2. 线程安全模式的不同 - **Struts1**: Struts1中的Action采用...

    struts1&struts2

    - **Struts1.x** 的测试通常需要使用如StrutsTestCase等第三方工具,由于Action的`execute`方法直接暴露了Servlet API,测试较为复杂。 - **Struts2** 提供了更好的测试支持,Action可以通过设置属性、初始化和...

    SSM笔记-POJO

    本笔记主要探讨了如何在SpringMVC中使用POJO来处理请求参数,以及SpringMVC如何自动将请求参数填充到对应的POJO对象中。 首先,理解POJO的概念。POJO是一个简单的Java对象,没有特定的约束或依赖于任何框架。在SSM...

    Struts1和Struts2的区别和对比

    而Struts2则更倾向于使用接口,Action类可以实现Action接口或其他自定义接口,甚至可以直接使用具有execute方法的POJO对象。Struts2还提供了一个ActionSupport基类,以方便实现常见的接口功能,如国际化和数据验证。...

    POJO转Map.txt

    3. **获取所有方法**:使用`obj.getClass().getDeclaredMethods()`获取POJO类中的所有方法,包括public、protected、private等访问级别的方法。 4. **遍历方法**:遍历所有方法,筛选出所有以“get”开头的方法,即...

    Struts1与Struts2本质区别

    值得注意的是,在Struts 2中,即使是简单的POJO(Plain Old Java Object)对象,只要包含`execute`方法,就可以作为Action使用。 #### 2. 线程模式方面的对比 - **Struts 1**:Action采用单例模式,这意味着所有...

    POJO In action 代码

    《POJO In Action》是一本深入探讨Plain Old Java Object(POJO)概念和技术的书籍,其核心在于如何在Java开发中有效地使用简单、无框架依赖的对象。POJOs是Java编程中最基本的元素,它们代表了纯粹的面向对象设计,...

    struts2配置详解

    1、Struts1 里使用 ActionServlet 作为控制器; Struts2 使用了一个过滤器作为控制器 2、Struts1 中每个 HTML 表单都对应一个 ActionForm 实例. Struts2 中, HTML 表单将被直接映射到一个 POJO. 3、Struts1 的验证...

Global site tag (gtag.js) - Google Analytics