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

标签 jstl

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

    <% 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有名字和姓氏,userInfoUserInfo 类型, 调用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/

相关文章:

jsp - JSTL 自定义标签

http - 如何停用jsp页面内的缓存

java - 带有参数的 getter 的 JSTL 或 JSP 2.0 EL

java - JSTL c :import for French characters 我需要什么编码

javascript - 从 jsp onchange 下拉值调用 Javascript

java - 转换为 JSTL(特别是调用方法)

spring - 在JSP中使用JSTL是否需要指定Spring JSTLView解析器?

java - 在 JSP/JSTL/EL 中访问集合的大小

java - jSTL taligb 中的 HTML5 data-* 属性

jsp - 在 JSP 中设置 Content-Type 和 Status-Code