以下是我在正文中编写的代码
<% List<UserInfo> userInfoList = new ArrayList<UserInfo>();
UserInfo userInfo = new UserInfo();
userInfoList = new CRUDOps().retrieveUserDataList();
pageContext.setAttribute("userInfoList", userInfoList);%>
下面是我在 div 中写的代码
<c:forEach var="userInfo" items="${userInfoList}">
<input type="radio" name="buyer" value="hhhh">${userInfo.get(0).getFirstName()}/><br />
<c:forEach>
上面的代码,必须显示 UserInfo 表中的名字和姓氏... UserInfoList 包含 UserInfo 对象,并且 UserInfo 有名字和姓氏。因此,使用索引值为“0”的 userInfoList 调用 POJO 中定义的 getFirstName。
我得到的错误是
org.apache.jasper.JasperException: /requestorGroup.jsp(63,59) The function get must be used with a prefix when a default namespace is not specified
最佳答案
如果 UserInfo
有名字和姓氏,userInfo
是 UserInfo
类型, 调用get(0)
它没有任何意义:它不是一个列表,也没有任何第一个元素。它有名字和姓氏。
你只需要
<c:forEach var="userInfo" items="${userInfoList}">
<input type="radio" name="buyer" value="hhhh">${userInfo.firstName}/><br />
<c:forEach>
JSP 表达式语言 (EL) 通过 getter 访问属性。所以你不应该使用getter,而只是使用属性的名称:
firstName
.您还应该避免在 JSP 中使用 scriptlet,而是将从数据库获取数据的代码放入 servlet。此外,四行中的两行是完全没有必要的。代码应简化为:
List<UserInfo> userInfoList = new CRUDOps().retrieveUserDataList();
pageContext.setAttribute("userInfoList", userInfoList);
关于jSTL - 当未指定默认命名空间时,该函数必须与前缀一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14739350/