未指定默认命名空间时,该函数必须与前缀一起使用

ash*_*sha 7 jstl

下面是我在正文中写的代码

    <% List<UserInfo> userInfoList = new ArrayList<UserInfo>();
    UserInfo userInfo = new UserInfo();
    userInfoList = new CRUDOps().retrieveUserDataList();
    pageContext.setAttribute("userInfoList", userInfoList);%>
Run Code Online (Sandbox Code Playgroud)

下面是我在div中编写的代码

    <c:forEach var="userInfo" items="${userInfoList}">
    <input type="radio" name="buyer"  value="hhhh">${userInfo.get(0).getFirstName()}/><br /> 
    <c:forEach>
Run Code Online (Sandbox Code Playgroud)

上面的代码,必须显示UserInfo表中的名字和姓氏... UserInfoList包含UserInfo对象,UserInfo有名字和姓氏.因此,使用索引值为"0"的userInfoList调用POJO中定义的getFirstName.

我得到的错误是

org.apache.jasper.JasperException:/requestorGroup.jsp(63,59)当未指定默认命名空间时,函数get必须与前缀一起使用

JB *_*zet 11

如果UserInfo有名字和姓氏,并且userInfo是类型UserInfo,则调用get(0)它是没有意义的:它不是列表,并且它没有任何第一个元素.它有名字和姓氏.

你只需要

<c:forEach var="userInfo" items="${userInfoList}">
    <input type="radio" name="buyer"  value="hhhh">${userInfo.firstName}/><br /> 
<c:forEach>
Run Code Online (Sandbox Code Playgroud)

JSP表达式语言(EL)通过getter访问属性.所以你不应该使用getter,而只需要使用属性的名称:firstName.

您还应该避免JSP中的scriptlet,并将从数据库获取数据的代码放入servlet中.而且,4条线中的两条完全没必要.代码应该简化为:

List<UserInfo> userInfoList = new CRUDOps().retrieveUserDataList();
pageContext.setAttribute("userInfoList", userInfoList);
Run Code Online (Sandbox Code Playgroud)