在使用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中FormBean的日期类型字段如何进行赋值以及自动转化。 一、FormBean的概念与作用 FormBean是Struts中的一种特殊Java类,用于封装HTTP请求中的参数。它们通常继承自`org.apache.struts....
- **自动扫描Action类**:Convention Plugin能够自动扫描指定包(默认为struts,action及其子包)下的所有Action类,从而减少配置文件的工作量。 - **自动推断命名空间和视图路径**:根据Action类所在的包名自动...
Struts2框架通过ActionContext获取到request对象,并从中提取用户输入的数据,将其赋值给Action的相应属性。 4.3.2 基本的数据对应方式 Struts2提供了两种主要的数据绑定方式:属性驱动(FieldDriven)和模型驱动...
通过该插件,Struts2能够自动扫描并识别Web应用程序中的Action类,从而推测出它们的命名空间(namespace)。此外,Zero Config还能够根据Action类的位置推断出结果视图(result view)的路径。 ##### 2.1 配置方法 在`...
- **jQuery的AJAX请求**:使用jQuery的$.ajax()方法,设置URL为Struts2的Action路径,成功回调函数内解析响应内容并更新DOM。 5. **示例代码**: - Struts2 Action代码可能如下: ```java public class ...
在Struts2中,EL表达式可以用来动态获取Action类中的属性值。当EL表达式无法找到对应的属性或者属性值为null时,可能会抛出异常。因此,在使用EL表达式时需要注意确保引用的属性是可用的。 ### 国际化资源文件 ...
在Struts2中,数据类型转换器是一个关键组件,它负责将HTTP请求参数转换为Action类中的属性类型,以供业务逻辑处理。这篇博客“Struts2数据类型转换器”可能深入探讨了这个主题,虽然具体的细节无法在此给出,但我们...
在`execute()`方法中,我们根据`articleId`查询数据库,获取文件的实际路径或URL,并将其赋值给`fileName`,然后返回SUCCESS,使得Struts2能够执行配置的结果类型。 3. **JSP页面**: JSP页面是用户界面,用户点击...
然后,在Struts2的配置文件或Action类中,你可以指定这个转换器应用于哪些类型或字段。 此外,Struts2的`ValueStack`也会使用TypeConverter来处理Action类属性的设置。当Action实例化后,ValueStack会遍历请求参数...
当用户通过表单提交请求时,Struts2会自动尝试将请求参数转换为Action类中相应字段的类型。这一过程遵循以下步骤: 1. 用户发起请求,Struts2根据`struts.xml`配置文件找到对应的Action。 2. 在Action中,Struts2...
`params`拦截器会尝试从请求中获取名为`birthDate`的参数,并将其转换为日期类型,然后赋值给Action的`birthDate`属性。如果验证失败,比如日期格式不正确,Struts2会将当前的Action实例(包含了用户的原始输入)...
现在,当用户在前端输入坐标并提交表单时,Struts2框架会自动调用我们定义的`PointConverter`,将坐标字符串转换为Point对象,并将该对象赋值给Action类的point属性。这个案例展示了Struts2类型转换的强大功能,允许...
Struts2标签库是开发Java Web应用程序时常用的一种工具,它极大地简化了JSP页面的编写,提高了开发效率。在JSP中,我们通常使用`<%@ taglib prefix="s" uri="/struts-tags" %>`来引入Struts2的标签库。下面将详细...
5. 创建对应的Action类,包含一个日期类型的属性,Struts2会自动调用配置的转换器将请求参数转换为Action属性的值。 6. 测试并验证转换器是否正确工作,即用户输入的日期字符串能正确转换并赋值给Action的日期属性。...
6. **POJO数据绑定**: Struts2支持直接使用POJO对象来处理表单数据,Action中可以直接定义与表单字段同名的属性,Struts2会自动进行数据绑定,无需像Struts1那样使用`request.getParameter()`。如果有多条数据,可以...
- **前台表单数据直接赋值到后台类属性**:Struts2的默认拦截器能够自动将HTTP请求参数映射到Action的属性上。 #### 五、Struts2执行流程 1. **用户请求**:用户通过浏览器发送*.action请求。 2. **执行Struts2...
Struts2的配置文件(struts.xml或struts.properties)定义了Action类方法与页面之间的映射关系。当Action方法执行完毕后,根据返回的字符串(例如"Error")决定跳转到哪个JSP页面。 6. **数据传输对象(DTO,Data ...
- 在Struts2的配置文件(通常为struts.xml)中,你需要指定FreeMarker作为默认的视图技术。 - 配置FreeMarker的路径,确保Struts2能够找到模板文件。例如: ```xml <constant name="struts.freemarker.templates...