在使用Struts2框架做项目的时候,大多数情况下,我们都会定义一个Action继承ActionSupport作为我们的父Action。在父Action中我们会把通用的一些属性提出来,但是怎么为这些属性赋值呢?
1.先看一下利用java反射,我们能从子类中获取父类的哪些属性和方法。
/**
* 父类,分别定义了三种修饰符修饰的属性和方法
*/
public class Father {
private String name;
public String love;
protected String money;
private String getName() {
return this.name;
}
public String getLove() {
return this.love;
}
protected String getMoney() {
return this.money;
}
}
/**
* 子类,只继承父类
*/
public class Child extends Father {
}
import java.lang.reflect.Field;
import java.lang.reflect.Method;
/**
* 测试类
* 测试Child的getDeclaredMethods,getMethods能获取哪些Method
* 测试Child的getDeclaredFields,getFields能获取哪些Field
*/
public class Test {
public static void main(String[] args) {
// 输出""
{
Method[] methods = Child.class.getDeclaredMethods();
for (Method method : methods) {
System.out.println(method.getName());
}
}
System.out.println("-----------------------------------");
// 输出
// getLove
// wait
// wait
// wait
// equals
// toString
// hashCode
// getClass
// notify
// notifyAll
{
Method[] methods = Child.class.getMethods();
for (Method method : methods) {
System.out.println(method.getName());
}
}
System.out.println("-----------------------------------");
// 输出""
{
Field[] fields = Child.class.getDeclaredFields();
for (Field field : fields) {
System.out.println(field.getName());
}
}
System.out.println("-----------------------------------");
// 输出
// love
{
Field[] fields = Child.class.getFields();
for (Field field : fields) {
System.out.println(field.getName());
}
}
}
}
经过测试,用反射反射只能从子类中获取父类的public的属性和方法。
2.经测试在Struts2访问Action能通过父Action的public方法给属性赋值。
分享到:
相关推荐
本书是广受赞誉的Struts 2优秀教程,它全面而深入地阐述了Struts 2的各个特性,并指导开发人员如何根据遇到的问题对症下药,选择使用最合适的特性。作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,...
1、 ValueStack其实就是一个放置Java对象的堆栈而已,唯一特别的是可以使用EL来获得值堆栈中对象属性的数据,并可以为值堆栈的对象属性赋值。 2、 EL,全称Express Language,即表达式语言。不要被语言吓倒,它是...
书中介绍了如何利用Struts 2 来解决Web 应用开发中的常见问题,同时还深入浅出地探讨了许多能帮助程序员编写Struts 2 应用程序的技巧,如管理页面导航活动、输入验证、国际化和本地化、对Ajax 的支持,等等。...
Struts2的自定义拦截器主要用于解析请求参数,将请求参数赋值给Action属性,执行数据校验,文件上传等等操作。当需要扩展Struts2的功能时,我们只需要提供相应的拦截器并将它配置到Struts2容器中即可;当我们不需要...
>>> prefix=""// 指定填充当前 Action 关联 FormBean 时 ,要添加到请求参数名称的前缀,因此,如果请求参数名为 "username" 并且 prefix 属性被设置为 "search" , 则将对 FormBean 调用一个名为 ...
全书分4篇,共24章,其中,第1篇为技能学习篇,主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e...
b、部门详情修改 c、查看部门所有员工 d、添加部门 f、修改部门 2、员工考勤管理 a、当天考勤查询 b、所有考勤查询(多条件考勤查询) 问题: 如果action同用全局属性会出现属性上次查询被赋值的情况 正在在解决方案...
* cn.itcast.crm.web.action:struts2的action * cn.itcast.crm.web.form:封装页面数据的javaBean * junit:开发人员测试用的 * 搭建hibernate层 * 定义需求:部门信息的页面数据要插入到数据库中 * 定义...
Struts ActionServlet控制器对象 642 Struts Action Classes 642 搞定Action对象 643 处理异常 643 Action的分类 643 Struts Action Mapping 646 使用ActionForward导航 647 Struts ActionForm Bean捕获表单数据 648...
\contentsline {chapter}{Contents}{2}{section*.1} {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{...
2,使用+运算符时,如果一边是数字,一边是字符串,就会自动将数字转换为字符串再连接,如:${3 + "5"},结果是:35 使用内建的int函数可对数值取整,如: ${ (x/2)?int } ${ 1.1?int } ${ 1.999?int } ${ -1.1?int } ...
项目用的是ssh,使用jquery的$.post访问struts2的Action,哪里都没有报错,可就是没有结果。 现在$.post要返回保存着权限的集合Collection,权限类Privilege和用户类User相互关联,也就是Privilege里使用set集合保存...