Struts2的OGNL表达式出问题了。没有被解析啊??谁帮我看看。
<s:iterator id="book" value="#request.bookList">
<tr align="center">
<td><s:property value="#book.name"/></td>
<td><s:property value="#book.author"/></td>
<td><s:property value="#book.pubDate"/></td>
<td><a href="updateBook.jsp">更新</a></td>
<td><a href="deleteBook.action?book.id=%{#book.id}">删除</a></td>
</tr>
</s:iterator>
我用如上代码(红色)访问deleteaction。后面跟参数book.id,然后在action中根据id删除数据库中的记录。
可是%{#book.id}没有被解析。
访问页面的时候。这个没有被解析。查看源代码是:<td><a href="deleteBook.action?book.id=%{#book.id}">删除</a></td>
而在别人的项目里。book.id=3.是一个具体的值。为什么OGNL%{#book.id}表达式没有起到作用,而另外的OGNL表达式却有效果。
在别人的项目里。那<td><a href="deleteBook.action?book.id=%{#book.id}">删除</a></td>是没有任何问题的。能够正确解析。我怀疑我加的jar的问题。
我只加了:
freemarker-2.3.8.jar
ognl-2.6.11.jar
struts2-core-2.0.14.jar
struts2-spring-plugin-2.0.14.jar
commons-logging-1.0.4.jar
xwork-2.0.7.jar这六个包。和用到的Spring的包
当我点那个超链接的时候。TomCat报:警告: Parameters: Character decoding failed. Parameter 'book.id' with value '%{' has been ignored. Note that the name and value quoted here may corrupted due to the failed decoding. Use debug level logging to see the original, non-corrupted values.