jsp 如何访问在 javabean 中声明为私有的变量

how variables declared private in javabean get accessed by jsp

我已经定义了许多私有变量并在那里定义了 getter/setter 方法,然后我在 jsp 页面中使用表达式 language.But 访问这些变量 language.But 如何访问私有定义的变量在 jsp 页?? 我的 java bean 代码是- 变量是

                private String beam_current;
                private String beam_energy;
                private String st4_vs6_bag1_rb;
                private String st4_vs6_bag2_rb;
                private String st4_vs6_bag3_rb;
                private String st4_vs6_bag4_rb;
                private String st4_vs6_bag5_rb;
                private String st4_vs6_bag6_rb;
                private String st4_vs6_bag7_rb;
                private String st4_vs6_bag8_rb;
                private String st4_vs6_bag9_rb;

设置方法用作-

                   while(rs.next()) 
                    {
                     Vacc_vs6 ref_drop=new Vacc_vs6();
                     ref_drop.setLogtime(rs.getString(1));
                     ref_drop.setBeam_current(rs.getString(2));
                     ref_drop.setBeam_energy(rs.getString(3));
                     ref_drop.setst4_vs6_bag1_rb(rs.getString(4));
                     ref_drop.setst4_vs6_bag2_rb(rs.getString(5));
                     ref_drop.setst4_vs6_bag3_rb(rs.getString(6));
                     ref_drop.setst4_vs6_bag4_rb(rs.getString(7));
                     ref_drop.setst4_vs6_bag5_rb(rs.getString(8));
                     ref_drop.setst4_vs6_bag6_rb(rs.getString(9));
                     ref_drop.setst4_vs6_bag7_rb(rs.getString(10));
                     ref_drop.setst4_vs6_bag8_rb(rs.getString(11));

有getter和setter方法在代码中定义为-

    public String getBeam_current() {
            return beam_current;
        }

        public void setBeam_current(String string) {
            this.beam_current = string;
        }

现在我的 jsp 是:-

<c:forEach var="r" items="${ref.refernece(param.ref_logtime)}" 

begin="${count}" end="${count}"> 

<tr bgcolor="darkgray ">
<td><c:out value="${r.logtime}"></c:out></td>

<td>
<c:choose><c:when test="${(r.beam_current) ne 0}"> 

我的问题是,当变量 beam_current 和 logtime 在 java class 中被定义为私有时,我如何能够访问这些变量??

非常简单的来说,就是下面的EL表达式

${r.beam_current}

基本解析为

Object r = servletRequest.getAttribute("r"); // or from page, session, or application attributes
Class<?> clazz = r.getClass(); 
Method getter = clazz.getMethod(resolveName("beam_current")); // where resolvedName generates a getter name through Java Bean property naming conventions
String result = getter.invoke(r);

然后result被写入ServletResponseOutputStream

我猜你还没有将 getter/setter 声明为私有(你做对了)。

只要 getter/setter 是 public 就可以通过这些方法访问它们(简而言之)。

其实这是这些方法的基本目的之一。

您可以通过将它们中的任何一个设为私有并通过表达式语言访问它来进行试验,然后看看会发生什么。