strut2 2.3.15.1 在jsp文件中将<s:iterator value="%{pageFinder.data}">修改为<s:iterator value="${pageFinder.data}">应用报attribute "value" does not accept any expressions
时间: 2023-07-19 10:28:06 浏览: 54
在 Struts2 的 JSP 页面中,使用 EL 表达式(`${}`)可以更方便地访问和显示值。在您提供的例子中,将 `<s:iterator value="%{pageFinder.data}">` 修改为 `<s:iterator value="${pageFinder.data}">` 是正确的做法,因为 `pageFinder.data` 是一个对象,您想要在 JSP 页面中使用它,因此应该使用 `${}` 表达式。
如果出现 "attribute 'value' does not accept any expressions" 错误,可能是因为您的 Struts2 版本过低,不支持在 `<s:iterator>` 标记中使用 `${}` 表达式。您可以升级 Struts2 版本,或者尝试使用 `<s:property>` 标记来显示值,如下所示:
```
<s:iterator value="%{pageFinder.data}">
<s:property value="someProperty" />
</s:iterator>
```
其中 `someProperty` 是您想要显示的属性名称。
相关问题
在struts2 2.3.15.1版本中将jsp页面中的<c:if test="${empty pageFinder.data }"> <tr><td colspan=13 align="center” height="25"xfont color="red"没有查询到相关记录</f</c:if> <s:iterator value="%{pageFinder.data}" var="rehs” status="status"><s:set var="index”value="#status getIndex()"/> 这段代码中的<s:iterator value="%{pageFinder.data}"改为<s:iterator value="${pageFinder.data}"系统会报does not accept any expressions这个错误,是什么原因?
在Struts2中,当使用`${}`表达式时,它会被解析为OGNL表达式,而非JSP表达式。而在JSP页面中使用的`<c:if>`标签和`<s:iterator>`标签是JSTL标签和Struts2标签,它们并不支持OGNL表达式。因此,将`<s:iterator>`标签中的`%{}`改为`${}`会导致系统报错。正确的做法是保留`%{}`。
在struts2 2.3.15.1版本的jsp文件中,如何将<s:iterator>标签中的%{}改为${},并且不会让系统报错
如前所述,当使用`${}`表达式时,它会被解析为OGNL表达式,而非JSP表达式。如果你想在`<s:iterator>`标签中使用`${}`表达式,你可以将`<s:iterator>`标签的`var`属性设置为一个临时变量,并在其中使用`${}`表达式。例如,如果原来的代码是这样的:
```
<s:iterator value="%{pageFinder.data}" var="rehs" status="status">
<s:set var="index" value="#status.getIndex()"/>
<!-- 其他代码 -->
</s:iterator>
```
你可以将其改为:
```
<s:iterator value="%{pageFinder.data}" var="temp">
<s:set var="rehs" value="${temp}"/>
<s:set var="index" value="#status.getIndex()"/>
<!-- 其他代码 -->
</s:iterator>
```
这样就可以在`<s:iterator>`标签中使用`${}`表达式了。需要注意的是,这样做可能会影响性能,因为每次迭代都需要将临时变量赋值给原来的变量。