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 07:28:06 浏览: 73
在 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` 是您想要显示的属性名称。
相关问题
<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()"/> 0 <tr> <td> <input id-"rulesId <s:property value="#rehs[o]” />” name="chkItem"value="<s:property value="#rehs[@]” />” type="checkbox"”onclick="itemCheckbox changed();” /> </td>这段代码为什么${pageFinder.data}会报不识别这个${}标签错误?
这段代码看起来是JSP页面中的代码,${pageFinder.data}是一个EL表达式,用于获取pageFinder对象中的data属性的值,但是可能因为EL表达式没有被正确解析而导致报错。可能需要检查JSP页面中是否有正确引入taglib库,以及是否在web.xml中正确配置了JSP servlet。
在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>`标签中使用`${}`表达式了。需要注意的是,这样做可能会影响性能,因为每次迭代都需要将临时变量赋值给原来的变量。
阅读全文