简体   繁体   中英

JSP Unterminated <s:a> Tag With Nested OGNL

I have some OGNL I am using to populate the href element of an <s:a> to a dynamically produced URL, handled by the 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>

However, I am getting an error saying the <s:a> tag is unterminated. I have tried escaping inner speechmarks, and using single quotes but so far I have always been greeted with the same error message.

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

I can't for the life of me see what is wrong. Maybe someone with better eyes for the language will see something I cannot.

You cannot use JSP tags in Struts tag's attributes, but you can use OGNL there.

Also note, that you can use OGNL only in Struts tag's attributes. And in most cases OGNL is executed once on the server, you shouldn't use nested OGNL or whatever you call it. May be this question will show you how to use you called nested OGNL .

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

Ah ok problem solved. Turns out the c:out wasn't needed to output the value of requestUri. It could simply be left as-is to be evaluated with the rest of the expression

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM