struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Gainty <mgai...@hotmail.com>
Subject RE: Using Expression Language (EL) To Access ActionSupport Class Properties
Date Mon, 04 May 2009 19:16:56 GMT

the default mechanism for passing information back and forth is string 
for more complex datatypes you're going to have to build the interface yourself assuming this
is the method

protected boolean[] hasRoles(List<String> roleIdentifiers,
                             AuthorizationInfo info)<!-- I have no idea whats inside of
AuthorizationInfo so you'll populate it --> 
<s:bean name="package.MyAuthorizationInfo" var="counter">
  <s:param name="foo" value="BAR" />
  The value of foo is : <s:property value="foo"/>, when inside the bean tag <br />
</s:bean>
<!--config class to the bean that contains the List<String> of role-identifiers -->
<s:bean name="package.ClassThatHasRoles" var="it">
  <s:param name="Role1" value="'ChiefLackey'"/>
  <s:param name="Role2" value="'AssistantToChiefLackey'"/>
</s:bean>
<p/>
<table border="0" cellspacing="0" cellpadding="1">
<tr>
  <th>Role identifiers</th>
</tr>
<p/>
<s:iterator value="#it.roleIdentifiers" status="rowstatus">
  <tr>
    <s:if test="#rowstatus.odd == true">
      <td style="background: grey"><s:property/></td>
    </s:if>
    <s:else>
      <td><s:property/></td>
    </s:else>
  </tr>
</s:iterator>
<jsec:hasAnyRoles name="<s:property value="#it.roleIdentifiers" />,<s:property
value="#counter" />" ></jsec:hasAnyRoles>
</table>
you will have to config the /META-INF/ki.tld
  <tag>
    <name>hasRoles</name>
<!--coordinate this name with the classname above e.g. ClassNameTag -->
    <tag-class>org.apache.ki.web.tags.HasRolesTag</tag-class>
    <body-content>JSP</body-content>
    <description>Displays body content only if the current user has one of the specified
roles from a
      comma-separated list of role names.
    </description>
    <attribute>
      <name>name</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>
  </tag>

alternative to make own tag is to use an existing tag that will concatenate string values
<s:set name="roleIds" value="foo1,bar1"/>
<jsec:hasAnyRoles name="<s:property value="#roleIds" /></jsec:hasAnyRoles>
Martin 
______________________________________________ 
Disclaimer and Confidentiality/Verzicht und Vertraulichkeitanmerkung / Note de déni et de
confidentialité 
This message is confidential. If you should not be the intended receiver, then we ask politely
to report. Each unauthorized forwarding or manufacturing of a copy is inadmissible. This message
serves only for the exchange of information and has no legal binding effect. Due to the easy
manipulation of emails we cannot take responsibility over the the contents.
Diese Nachricht ist vertraulich. Sollten Sie nicht der vorgesehene Empfaenger sein, so bitten
wir hoeflich um eine Mitteilung. Jede unbefugte Weiterleitung oder Fertigung einer Kopie ist
unzulaessig. Diese Nachricht dient lediglich dem Austausch von Informationen und entfaltet
keine rechtliche Bindungswirkung. Aufgrund der leichten Manipulierbarkeit von E-Mails koennen
wir keine Haftung fuer den Inhalt uebernehmen.
Ce message est confidentiel et peut être privilégié. Si vous n'êtes pas le destinataire
prévu, nous te demandons avec bonté que pour satisfaire informez l'expéditeur. N'importe
quelle diffusion non autorisée ou la copie de ceci est interdite. Ce message sert à l'information
seulement et n'aura pas n'importe quel effet légalement obligatoire. Étant donné que les
email peuvent facilement être sujets à la manipulation, nous ne pouvons accepter aucune
responsabilité pour le contenu fourni.






> Date: Mon, 4 May 2009 11:00:36 -0700
> From: bphillips@ku.edu

> To: user@struts.apache.org
> Subject: Using Expression Language (EL) To Access ActionSupport Class Properties
> 
> 
> We are building a new web application that uses both JSecurity
> (http://cwiki.apache.org/confluence/display/KI/Index, now known as Ki) and
> Struts 2 (version 2.1.6).  
> 
> In many of the JSPs for this application, we need to provide a dynamic
> String value to the JSecurity tag library's hasAnyRoles tag.  This tag's
> format is:
> 
> <jsec:hasAnyRoles name="Staff,Admin">
> ...content to include if current user has one of the roles specified in the
> name attribute...
> </jsec:hasAnyRoles>
> 
> Of course instead of hard-coding the values for the name attribute we want
> to have the the attribute's value rendered dynamically using Struts 2.  
> 
> First we tried using:
> 
> <jsec:hasAnyRoles name="<s:property value='roles' />" ></jsec:hasAnyRoles>
> 
> But that did not work even though we have a public method named getRoles in
> the action support class that renders this jsp page.
> 
> So just for a test we tried using expression language (EL):
> 
> <jsec:hasAnyRoles name="${roles}" ></jsec:hasAnyRoles>
> 
> And the above worked just fine.  
> 
> I didn't know you could access properties of the ActionSupport class using
> Expression Language. 
> 
> I researched the ability to use Expression Language (EL) to access
> properties of the ActionSupport class in the Struts 2 documentation at
> http://struts.apache.org and in this mailing list.  I didn't find much about
> the capability to use EL to access properties of the ActionSupport class. 
> The documentation clearly states NOT to use EL in attributes for Struts 2
> tags, but it's not clear on using EL to access ActionSupport class
> properties outside of the Struts 2 tags.
> 
> Since we are building a new web application that will be around for some
> time and would like to be able to upgrade to future versions of Struts 2,
> we'd like to know if the ability to access ActionSupport class properties
> using EL is a built-in and a supported feature of Struts 2?  
> 
> 
> Below is some test code to detail how this works:
> 
> ActionSupport class:
> 
> import com.opensymphony.xwork2.ActionSupport;
> 
> public class TestActionSupport extends ActionSupport {
> 
> 	private static final long serialVersionUID = 1L;
> 
> 	public String execute() throws Exception {
> 
> 		return SUCCESS;
> 
> 	}
> 	
> 	public String getRoles() {
> 		
> 		return "Staff,Admin";
> 
> 	}
> 
> }
> 
> JSP View rendered when above class returns SUCCESS:
> 
> <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
> <%@ taglib prefix="s" uri="/struts-tags" %>
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
> <html>
>   <head>
>    
>     <title>Test of Struts 2 and EL</title>
> 
>   </head>
>   
>   <body>
>     <h3>Test of Struts 2 and EL Results Page</h3>
>     <p>Roles via expression language: ${roles}</p>
>     <p>Roles via Struts 2 property tag: <s:property value='roles' /></p>
>   </body>
> </html>
> 
> Does Struts 2 turn the ActionSupport class itself turned into a bean object
> that is placed in request scope?  Is that how the Expression Language
> ${roles} is able to execute correctly?
> 
> Thanks for any information provided that helps us understand the use of EL
> to access the ActionSupport class properties.
> 
> Bruce
> 
> -- 
> View this message in context: http://www.nabble.com/Using-Expression-Language-%28EL%29-To-Access-ActionSupport-Class-Properties-tp23373477p23373477.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
> 

_________________________________________________________________
Hotmail® has a new way to see what's up with your friends.
http://windowslive.com/Tutorial/Hotmail/WhatsNew?ocid=TXT_TAGLM_WL_HM_Tutorial_WhatsNew1_052009
Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message