c:param不附加预期值,它附加%24%7bkey%7d而不是$ {key}的评估值

时间:2013-07-17 20:18:58

标签: jsp jstl

以下内容无效

<%session.setAttribute("key", ${key});%>


<c:redirect url="/example/request/first.jsp"> 
    <c:param name="send" value="done"/>
    <c:param name="key"><%= session.getAttribute("key") %></c:param>
</c:redirect>   

结果:“发送=完成&amp;密钥=%24%7bkey%7d”

我如何传递会话属性以便获得正确的值?

* update - 发生的事情是我将上传的文件保存到服务器上的目录中。我不知道如何使用ajax调用来完成它,所以我使用了表单post方法。

我的ajax调用将记录保存到数据库正在我的表单发布之前执行,因此一旦我转发到jsp页面处理文件上传,密钥(用于该记录)就会丢失。

我正在尝试从那里保留密钥重定向到我的主页面,以便我可以为用户加载记录。我希望通过将密钥从ajax调用保存到表单帖子,也许会话数据可以为我完成。我知道凌乱......我的解决方案至少需要在Internet Explorer 8上工作。

1 个答案:

答案 0 :(得分:4)

为什么要将taglibs / EL与oldschool scriptlet混合

只使用Expression Language (EL, those ${} things)

<c:param name="key" value="${key}" />

我强烈建议您通过<% .. %>中的相应条目配置您的webapp以完全禁用 scriptlet (那些web.xml事物),这样就可以避免这种错误在将来。

另见: