You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Alex Siman <al...@gmail.com> on 2009/10/13 18:39:23 UTC

[CLOSED] Re: How to get value of tag attribute from OGNL?

Seems like question is closed now.

Thanks.

Alex Siman wrote:
> 
> Thanx you Dave for your advice! 
> 
> I switched off the JSTL-EL (as it was recomended in Struts2 wiki), so I
> wrote another working code:
> 
> 	<% request.setAttribute("jspContext", jspContext); %>
> 	<s:property value="%{#attr.jspContext.getAttribute('fieldName')}"/>
> 
> 
> And another more complex variant:
> --------------------------------------
> 	<% 
> 		class JspContextUtils {
> 			private static final String ATTR_MAP_NAME = "jspContext";
> 			
> 			private PageContext pageContext;
> 			private ServletRequest request;
> 			
> 			public JspContextUtils(JspContext jspContext) {
> 				pageContext = (PageContext) jspContext;
> 				request = pageContext.getRequest();
> 			}
> 			
> 			public void exposeTagAttributeToOgnl(String attrName) {
> 				Map<String, Object> attrMap = null;
> 				Object attrMapObj = request.getAttribute(ATTR_MAP_NAME);
> 				if (attrMapObj == null || !(attrMapObj instanceof Map)) {
> 					attrMap = new HashMap<String, Object>();
> 					request.setAttribute(ATTR_MAP_NAME, attrMap);
> 				} else {
> 					attrMap = (Map<String, Object>) attrMapObj;
> 				}
> 				attrMap.put(attrName, pageContext.getAttribute(attrName));
> 			}
> 		}
> 
> 		JspContextUtils jspContextUtils = new JspContextUtils(jspContext);
> 	%>
> 
> 	<% jspContextUtils.exposeTagAttributeToOgnl("fieldName"); %>
> 	<s:property value="%{#attr.jspContext.fieldName}"/>
> --------------------------------------
> 
> 
> P.S. What did you mean by this?:
> 
> 	"The answer is easier if this .tag file contains no recursive calls."
> 
> 
> DNewfield wrote:
>> 
>> The answer is easier if this .tag file contains no recursive calls.
>> The issue is that the .tag file receives attributes through jstl-el, not 
>> ognl.  You can use the jstl-el c:set tag to promote that value into a 
>> namespace that's also accessible from ognl.
>> 
>> Alex Siman wrote:
>>> /WEB-INF/tags/formField.tag
>>> --------------------------------------------------------------
>>> <%@ attribute name="fieldName" %>
>> <c:set var="fieldNameInTag" scope="request" value="${fieldName}"/>
>> <s:property value="%{#request.fieldNameInTag}"/>
>> 
>> -Dale
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>> For additional commands, e-mail: user-help@struts.apache.org
>> 
>> 
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/How-to-get-value-of-tag-attribute-from-OGNL--tp25862967p25876485.html
Sent from the Struts - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org