我有一些OGNL,用于将的href元素填充<s:a>到由Google UserService处理的动态生成的URL。
<s:a>
<%@ 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
我一辈子都看不到哪里出了问题。也许对语言有更好了解的人会看到我看不到的东西。
您不能在Struts标签的属性中使用JSP标签,但是可以在其中使用OGNL。
另请注意,您 只能 在Struts标记的属性中使用OGNL 。在大多数情况下,OGNL在服务器上执行一次,因此您不应使用嵌套的OGNL或任何您称之为的名称。可能这个问题将告诉您如何使用称为_嵌套OGNL的方法_ 。
<s:set var="requestUri" value="%{#context['com.opensymphony.xwork2.dispatcher.HttpServletRequest'].requestURI}" /> <s:a href="%{#action.userService.createLoginURL(#requestUri)}">Sign in</s:a>