7

以下是我在正文中编写的代码

    <% 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) 当未指定默认命名空间时,函数 get 必须使用前缀

4

1 回答 1

12

如果UserInfo有一个名字和一个姓氏,并且userInfo是 type 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);
于 2013-02-06T21:45:53.633 回答