对于提交数据比较多的表单,为了避免大量地在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的错误。
分享到:
相关推荐
NULL 博文链接:https://takeme.iteye.com/blog/1629940
Struts1的一个普遍问题是使用抽象类编程而不是接口。 ◆Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去实现 常用的接口。Action...
Struts 1的一个具体问题是使用抽象类编程而不是接口。Struts 2 Action类可以实现一个Action接口,也可以实现其他接口,使可选和定制的服务成为可能。Struts 2提供一个ActionSupport基类去实现常用的接口。即使Action...
POJO In action 代码 POJO In action 代码 POJO In action 代码
1、Struts1 里使用 ActionServlet 作为控制器; Struts2 使用了一个过滤器作为控制器 2、Struts1 中每个 HTML 表单都对应一个 ActionForm 实例. Struts2 中, HTML 表单将被直接映射到一个 POJO. 3、Struts1 的验证...
POJO转Map代码,POJO转Map代码POJO转Map代码POJO转Map代码
SSM笔记-POJO,测试POJO,SpringMVC会根据请求参数名和POJO类的属性名自动匹配为对应对象填充值
使用pojo类来生成binding的布局文件代码,使用pojo类来生成binding的布局文件代码,
学习百灵报表的童鞋们推荐必看,使用pojo作为数据源
netty pojo netty pojo替换 channelbuffer
利用Mybatis逆向工程来生成pojo,dao和mapper。然后将pojo实体类和dao拷贝到工程当中。这样可以快速地实现数据库的开发
Mybatis pojo插件生成工具 把包下载下来,配置到eclipse中,project new 可以看到mybatis插件已经安装好
2、action是一个pojo,所以struts2.0与框架的藕合度非常低。 实现Action时有时会继承于ActionSupport, 覆盖execute方法,从而创建一个Action。 因为ActionSupport提供了很多方法可以为开发提供方便。 3、...
POJO javaBean EJB JNDI 理解及区别
做Maven项目工程时,往往需要使用Pojo类来封装查询的sql信息 PojoCreator4j可以解决需要不断手敲字段的机械录入工作特别适用于字段多、类型多、数据表多的情况
参照https://github.com/joelittlejohn/jsonschema2pojo/wiki/Getting-Started的步骤Using jsonschema2pojo within your Java project (embedded)
Struts2中的Action都是POJO,这一方面增强了Action本身的可测试性,另一方面也减小了框架内部的耦合度,而HTML表单中的输入项都被转换成了恰当的类型以供action使用。开发人员还可以通过拦截器(可以自定义拦截器...
hibernate生成pojo
需要注意的一点是ref属性表示引用同一映射方案的另一 映射,这样您便可以简化同一映射数据类型的配置;而import属性是指定需要在最终 生成的源代码中作为类最开始的package类型导入声明部分的导入类型名称,因此,这...
This is a easy POJO class!