我正在尝试在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的格式必须分别为getSomeMethod
,setSomeMethod
。请注意,get / set之后的首字母大写。
要修复您的代码,请更改
public List<SeleccionBean> getmSelecciones() throws SQLException {
至
public List<SeleccionBean> getMSelecciones() throws SQLException {
您对
SeleccionBean.getmNombre()
也有同样的问题。将其更改为SeleccionBean.getMNombre()
。