今天我也来写写JavaBean属性值动态设置。
设计了一类,类里面有上百个属性,如果一个一个设置的话,那就要上百个if判断太累了,难道没有什么好的方法循环判断吗?
于是从网上搜了搜,果然有哦,不过说的是在jsp里通过Property.setProperty,不是我需要的,接着搜。半天没有结果,不过还好有一个同学在网上发了一个问题说是两个bean拷贝的时候有问题。。。。
看看,太好了里面竟然有bean的字段设置。god~~
改了改测试一下,竟然可以哦~~
下面代码呈上~~
public class TestBean {
public String name;
public int age;
public String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
import java.lang.reflect.Field;
import java.util.ArrayList;
public class TestReflet {
public static void main(String[] args) {
try {
TestBean bean = new TestBean();
Class clas = Class.forName(bean.getClass().getName());
if (!(clas.isInstance(bean))) {
System.out.println("传入的java实例与配置的java对象类型不符!");
return;
}
Field[] fields = clas.getDeclaredFields();
ArrayList<String> fieldsNameList = new ArrayList<String>();
int i = 0;
for (Field field : fields) {
fieldsNameList.add(field.getName());
}
setBeanValue(bean, fields, fieldsNameList, "age", 20);
setBeanValue(bean, fields, fieldsNameList, "name", "Shane");
setBeanValue(bean, fields, fieldsNameList, "sex", "boy");
System.out.println("Age:" + bean.getAge() + "\n" + "Name:"
+ bean.getName() + "\n" + "Sex:" + bean.getSex() + "\n");
} catch (Exception e) {
e.printStackTrace();
}
}
public static void setBeanValue(Object destObj, Field[] fields,
ArrayList<String> fieldsNameList, String strKey, Object objValue)
throws IllegalArgumentException, IllegalAccessException {
int intIndex = fieldsNameList.indexOf(strKey);
if (intIndex >= 0) {
fields[intIndex].set(destObj, objValue);
}
}
}
分享到:
相关推荐
Constrained属性比Bound属性更进一步,它不仅会在属性值改变时通知其他对象,而且在值被设置之前还会进行验证。如果新值不符合预设的约束条件,那么属性的值不会改变,并且会触发一个`VetoableChangeEvent`。这允许...
### JavaBean属性命名规范 JavaBean是一种遵循特定编码标准的Java类,主要用于封装数据或表示简单的数据载体。在JavaBean中,属性的命名规范是非常重要的,因为它直接影响到代码的可读性和可维护性,同时也会影响到...
- **访问和修改属性值**:使用`Field`的`get(Object obj)`和`set(Object obj, Object value)`方法可以读取和设置Bean实例的属性值。 - **遍历getter和setter**:`Class.getMethod(String name, Class<?>... ...
这种机制使得 JavaBean 在属性值改变时能够自动地通知到其他组件。为了实现这一功能,需要使用 `PropertyChangeSupport` 类来管理属性值变化事件。 ```java public class Alden3 extends Canvas { private String ...
javabean中有100个属性字段,想要在前端页面获取这100个字段和字段对应的中文名称,如用户名称(username),密码(password),可以动态的获取到中文名称和属性字段,并返回前端页面,本例只实现动态解析功能
2. 在JSP页面中通过EL(表达式语言)和JSTL标签访问JavaBean属性。 3. 学习如何在Spring框架中使用JavaBean作为模型对象。 4. 实现属性变更监听器(PropertyChangeListener),以响应属性值的改变。 这个"JavaBean...
`<jsp:useBean>` 实例化或查找JavaBean,`<jsp:setProperty>` 设置属性值,`<jsp:getProperty>` 获取属性值。例如: ```jsp ``` 在现代Web开发中,虽然JavaBean的概念仍然适用,但常常被更高级的框架如...
在上面的代码中,getName() 方法是 getter 方法,用于获取 name 属性的值,而 setName() 方法是 setter 方法,用于设置 name 属性的值。 三、JavaBean 属性命名规范的重要性 JavaBean 属性命名规范非常重要,因为...
其中,`BeanUtils.copyProperties()`方法是最常用的,它能将一个对象的所有属性值复制到另一个对象中,包括对基本类型和复杂类型的转换。例如,如果我们有一个前端传来的JSON字符串,可以先将其转化为Java对象,然后...
`<jsp:setProperty>`用于设置JavaBean的属性值。它通常与`<jsp:useBean>`配合使用,以便在JSP页面中为JavaBean的属性赋值。例如: ```jsp ``` 这里的`name`属性是JavaBean的ID,`property`是需要设置的属性名,`...
* 可以将功能、处理、值、数据库访问和其他任何可以用 java 代码创造的对象进行打包,并且其他的开发者可以通过内部的 JSP 页面、Servlet、其他 JavaBean、applet 程序或者应用来使用这些对象。 * 提供了一种...
2. **初始化JavaBean**:如果JavaBean需要初始化数据,可以在`<jsp:setProperty>`标签中设置属性值: ```jsp *" /> ``` `property="*"`表示将请求参数映射到JavaBean的所有公共属性。 3. **访问JavaBean**:...
`jsp:useBean`指令用于实例化或查找页面作用域内的JavaBean,`jsp:setProperty`用于设置JavaBean的属性值,`jsp:getProperty`则用于获取JavaBean的属性值。例如: ```jsp ``` 这里的`id`属性指定了JavaBean在...
- 在Servlet中,用户提交的表单数据可以通过request对象获取,然后使用new User()创建一个新的User对象,并用setter方法设置属性值。 - 调用User类的save()方法(如果存在),将新对象存储到数据库中。 - 最后,...
2. **设置和获取JavaBean属性**: - 设置JavaBean的属性值通常使用`<jsp:setProperty>`标签,例如: ```jsp ``` - 这里,`name`属性对应于JavaBean的引用名,`property`属性指定了要设置的属性名,`value`属性...
除了`<jsp:useBean>`之外,还可以使用`<jsp:getProperty>`和`<jsp:setProperty>`来获取和设置JavaBean的属性值。 - `<jsp:getProperty>`用于获取JavaBean的属性值。 - `<jsp:setProperty>`用于设置JavaBean的属性值...
- **属性赋值和获取**:通过调用setter和getter方法设置和获取属性值。 - **XML配置**:在Spring等框架中,JavaBean可以通过XML配置文件进行依赖注入。 - **注解配置**:在现代Java应用中,使用注解(如@...
- **实例化和赋值**:在代码中创建JavaBean实例,并通过getter和setter设置属性值。 - **数据交换**:在Servlet或Controller中接收请求参数,填充JavaBean,然后将JavaBean传递给视图层(如JSP)或后续业务处理。 ...
每个属性都有对应的getter和setter方法,用于访问和修改属性值。 3. **封装**:JavaBean的属性通过getter和setter方法进行封装,以保护内部状态。 4. **序列化**:JavaBean通常实现Serializable接口,允许对象的状态...