我有一些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 <s:a tag
我不能为我的生活看到错误。也许那些对语言有更好眼光的人会看到我不能的东西。
答案 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的值。它可以简单地保留为与表达式
的其余部分一起评估