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

<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;
     }
}

最佳答案

您正在使用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()

10-08 03:44