我正在尝试使用名为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;
}
}
答案 0 :(得分:1)
您正在使用 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()
。
答案 1 :(得分:0)
JavaBean约定是通过使用“set”或“get”来定义getter和setter,后面跟着第一个字母大写的属性的名称,即对于mSelecciones
,getter将是{{1 },而不是getMSelecciones()
。与getmSelecciones()
相同 - &gt; mNombre