温馨提示:本文翻译自stackoverflow.com,查看原文请点击:java - How do JSP pages find the correct setters for parameters
java jsp reflection javabeans setter

java - JSP页面如何找到正确的参数设置器

发布于 2020-04-03 23:24:57

说我有以下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>标签同名

设置员甚至需要参数吗?

大写重要吗?

等等...

查看更多

提问者
Oliver Olding
被浏览
58
Holger 2020-01-31 18:20

官方API中有一个软件包java.beans

为工具想分析一个bean类A出发点是Introspector具有getBeanInfo方法,它的类文档状态:

如果在类上找不到显式的BeanInfo,则使用低级反射研究类的方法,并应用标准设计模式来标识属性访问器,事件源或公共方法。然后,我们继续分析类的超类,并从中添加信息(可能还包括超类链)。

它清楚地表明(公共)方法很重要。

PropertyDescriptor进行比较,提供属性的元信息,以及反射类的实例getReadMethod()getWriteMethod()返回实例Method

Bean Specification的第7章和第8.3章描述了属性访问器方法的模式,但是您已经展示了基本知识。借助该java.beans软件包的知识,您可以通过提供显式BeanInfo实现来集成偏离标准模式的类