一尘不染

JSP未终止 带有嵌套OGNL的标签

jsp

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

<%@ 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

我一辈子都看不到哪里出了问题。也许对语言有更好了解的人会看到我看不到的东西。


阅读 195

收藏
2020-06-08

共1个答案

一尘不染

您不能在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>
2020-06-08