说我有以下JSP页面:
<jsp:useBean id="bean" scope="page" class="com.test.jsp.beans.TestBean"/>
<jsp:setProperty name="bean" property="*"/>
...
<input type="text" name="test" value="test value"/>
...
和豆:
package com.test.jsp.beans;
public class TestBean {
public String test;
public String getTest() {
return test;
}
public void setTest(String test) {
this.test = test;
}
}
Java如何知道将值从<input>
标签传递给setTest()
方法?
我想了解它们如何链接的内部原理,我假设使用了反射。
java是在寻找setter方法还是在寻找变量?
设置者名称是否需要设置+ <input>
名称?
设置器是否需要仅包含一个参数?
该参数是否需要与<input>
标签同名?
设置员甚至需要参数吗?
大写重要吗?
等等...
官方API中有一个软件包java.beans
。
为工具想分析一个bean类A出发点是Introspector
类具有getBeanInfo
方法,它的类文档状态:
如果在类上找不到显式的BeanInfo,则使用低级反射研究类的方法,并应用标准设计模式来标识属性访问器,事件源或公共方法。然后,我们继续分析类的超类,并从中添加信息(可能还包括超类链)。
它清楚地表明(公共)方法很重要。
与包的PropertyDescriptor
类进行比较,包的类提供属性的元信息,以及反射类的实例getReadMethod()
并getWriteMethod()
返回实例Method
。
Bean Specification的第7章和第8.3章描述了属性访问器方法的模式,但是您已经展示了基本知识。借助该java.beans
软件包的知识,您可以通过提供显式BeanInfo
实现来集成偏离标准模式的类。