JSP Unterminated <s:a>带嵌套OGNL的标记

时间:2016-03-20 20:19:37

标签: java jsp struts2 ognl

我有一些OGNL用于将<s:a>的href元素填充到动态生成的URL中,由Google UserService处理。

<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<c:set var="requestUri" value="%{#context['com.opensymphony.xwork2.dispatcher.HttpServletRequest'].requestURI}" />
<s:a href="%{#action.userService.createLoginURL("<c:out value="${requestUri}"/>");}">Sign in</s:a>

但是,我收到一条错误消息,指出<s:a>标记未终止。我试过转义内部语音标记,并使用单引号,但到目前为止,我总是遇到同样的错误信息。

(11,71) Unterminated &lt;s:a tag

我不能为我的生活看到错误。也许那些对语言有更好眼光的人会看到我不能的东西。

2 个答案:

答案 0 :(得分:1)

您不能在Struts标记的属性中使用JSP标记,但您可以在那里使用OGNL。

另请注意,您可以在Struts标记的属性中仅使用OGNL 。在大多数情况下,OGNL在服务器上执行一次,你不应该使用嵌套的OGNL或你称之为的任何东西。可能this问题会告诉您如何使用名为嵌套的OGNL

<s:set var="requestUri" value="%{#context['com.opensymphony.xwork2.dispatcher.HttpServletRequest'].requestURI}" />
<s:a href="%{#action.userService.createLoginURL(#requestUri)}">Sign in</s:a>

答案 1 :(得分:0)

好的问题解决了。 原来c:out不需要输出requestUri的值。它可以简单地保留为与表达式

的其余部分一起评估