无法从JSP中的bean内部获取List

时间:2013-12-01 02:10:08

标签: java jsp jstl

我正在尝试使用名为copa的bean中的信息在我的jsp上创建一个字符串列表,存储在会话中。

<jsp:useBean id="copa" class="Beans.CopaBean" scope="session"/>

                                <c:forEach var="item" items="${copa.mSelecciones}">
                                       ${item.mNombre}
                                    </c:forEach>

我的对象copa,实现java.io.Serializable。里面有一个对象列表,它们也实现了这个接口。 我还可以看到在NetBeans中的变量选项卡中填充了copa对象,以及包含数据的mSelecciones集合。

我已经尝试了绝对的一切......从使公共属性mSelecciones,将名称更改为更短,调用get方法,getmSelecciones()等,但我无法获取我的代码来打印任何文本在html上。

任何帮助?

当我运行代码时,这是HTML中的打印输出,你可以看到我有两个对象坐在那里..只是不能迭代它们。

 <c:forEach var="a" items="[Beans.SeleccionBean@7022efdf, Beans.SeleccionBean@5b252fd]">

                                    </c:forEach>

这是我的CopaBean类结构:

    public class CopaBean implements java.io.Serializable {

    public  List<SeleccionBean> mSelecciones = null;


    public List<SeleccionBean> getmSelecciones() throws SQLException {
     }
}

这是我的SeleccionesBean类结构:

    public class SeleccionBean  implements java.io.Serializable{
    private String mNombre;
    public String getmNombre() {
            return mNombre;
     }
}

2 个答案:

答案 0 :(得分:1)

您正在使用 JSTL ,因此您必须对要与 JSTL 一起使用的所有方法使用 JavaBean命名约定

例如,语句<c:forEach var="item" items="${copa.mSelecciones}失败,因为java应用程序服务器正在尝试解析方法CopaBean.getMSelecciones()但找不到它。请注意,M已大写。另请注意,方法中的m不是!

要使应用服务器解析该方法,您必须确保其名称遵循 JavaBean命名约定。例如getter和setter的格式必须分别为getSomeMethodsetSomeMethod。请注意,get / set之后的第一个字母是大写的。

要修复代码,请更改

public List<SeleccionBean> getmSelecciones() throws SQLException {

public List<SeleccionBean> getMSelecciones() throws SQLException {

SeleccionBean.getmNombre()也存在同样的问题。将其更改为SeleccionBean.getMNombre()

答案 1 :(得分:0)

JavaBean约定是通过使用“set”或“get”来定义getter和setter,后面跟着第一个字母大写的属性的名称,即对于mSelecciones,getter将是{{1 },而不是getMSelecciones()。与getmSelecciones()相同 - &gt; mNombre