Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用foreach使用EL遍历arraylist_Java_Jsp_Jakarta Ee_Foreach_El - Fatal编程技术网

Java 使用foreach使用EL遍历arraylist

Java 使用foreach使用EL遍历arraylist,java,jsp,jakarta-ee,foreach,el,Java,Jsp,Jakarta Ee,Foreach,El,我有一个类language具有ID和Name的特性。 我有另一个类Language\u List,它将ArrayList lang作为成员变量 在我的JSP页面中,我想使用EL和For each循环访问ArrayList lang的Name变量 <c:forEach var="language" items="${languages.lang}"> ${language}<br> </c:forEach> ${language} 然而,它并没有显示a

我有一个类
language
具有
ID
Name
的特性。 我有另一个类
Language\u List
,它将
ArrayList lang
作为成员变量

在我的JSP页面中,我想使用EL和For each循环访问
ArrayList lang
的Name变量

<c:forEach var="language" items="${languages.lang}">
  ${language}<br>
</c:forEach>

${language}
然而,它并没有显示ant的结果,intellisense也不起作用。有人能帮我吗 PS:languages是一个Bean变量,包含数据库中的语言列表 我试过这个,得到了这个

 <b>${languages.lang}</b>
HTML
${languages.lang}
HTML

[萨基拉。language@f1541c,sakila。language@63c8fabf,sakila。language@1fc644c7,sakila。language@11cd751d,sakila。language@47c3cc0c,sakila。language@7894ca3,sakila。language@47066532,sakila。language@74ddda0b,sakila。language@1116441e,sakila。language@4cd21655,sakila。language@74b84dd9,sakila。language@6fff1d6c,sakila。language@55e4d6e5,sakila.language@22d88071,sakila。language@33d88c96,sakila。language@4df5e671,sakila。language@4aec2cb3,sakila。language@576ac232,sakila。language@76a6dbd7,sakila。language@44ab3d1c,sakila。language@46391c7c,sakila。language@4f7d34e8,sakila。language@251c941d,sakila。language@77400ef3]

EL不访问对象的字段。它访问对象的bean属性。这意味着
${languages.lang}
被转换为调用
languages.getLang()

如果你没有这样的getter,你会得到一个异常。如果它只是不显示任何内容,可能是因为
语言
为null,或者是因为它的
lang
列表为null或空。要确认或弱化这些猜测,我们需要查看创建和填充bean的代码及其语言列表,以及e您可以将它存储在某个地方,以便从JSP访问它


另一种可能是您忘记在JSP的开头声明核心标记库。要确认或削弱这一点,请粘贴JSP的代码和JSP生成的HTML代码(使用浏览器中的View page source)

我已经进行了编辑,并且lang变量在调试时不是空的。如果我使用scriplets,我可以轻松遍历。因此,它远不是什么都不打印。如果您希望它显示有意义的内容,那么就显示每个对象的内部属性,或者重写Language类中的
toString()
方法。(请将language重命名为language。按照Java中的惯例,类总是以大写字母开头)。在您的示例中,
language
是一个变量,而不是一个类。为什么不让基类实现
Iterable
并提供正确的
.toString()
implementation for elements?@fge在.tostring()的主体中,我应该怎么做?你想说你不能使用EL访问Arraylist?我不是说你不能访问它,我只是说如果数组是你类中唯一可iterable的东西,那么你可以让类实现数组中元素的iterable。至于.tostring(),这取决于要显示的信息。