You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Alan Pocklington <aj...@pocko.freeserve.co.uk> on 2004/10/15 16:24:15 UTC

[REPOST] Get Raw Action Path.

I have an Action defined as:

  <action 
      path="/myaction/**"  
      type="...MyAction"/>
      
Within the Action class itself I want to get at the path attribute as 
defined in the config file, i.e. 
/myaction/**.  

I can get the requested path, for example /myaction/somepath/xxx.do via 
actionMapping.getPath() but not the original path to which the action was 
mapped.  Is there any way I can get at this?

Thanks in advance. 


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


RE: [REPOST] Get Raw Action Path.

Posted by Alan Pocklington <aj...@pocko.freeserve.co.uk>.
Cheers for that David.  Despite all my searching through the Struts 
source I couldn't figure that one out.

Luckily I'm not using modules so that should work a treat.

Thanks again,

Alan.

"David G. Friedman" <hu...@ix.netcom.com> wrote in
news:OJEDJMPOKIPEHGNAFOPJAEPNEBAA.humble@ix.netcom.com: 

> A solution in Struts v1.2.4 is at hand, too bad it's not some quick
> method call like getPattern().  If you can figure out what I did, you
> can use it. 
>:)  Seriously, I obtained a raw list of Action Mappings (unprocessed
>:paths, 
> as in Struts config files), then I used a Struts util class
> WildCardHelper to match the patterns, and viola!
> 
> WARNING: Since my webapp has only one struts config file, I haven't
> tested this code with Modules.  If it doesn't work and you have
> modules, you'll have to figure out how to check the ActionConfig's in
> each module's ModuleConfig (and how to get each modules ModuleConfig).
> 
> WARNING #2: Use the below code at your own risk.
> 
> WARNING #3: If I find you using my package name, I'm going to beat you
> with my copy of Struts In Action! (Am I joking?)
> 
> package com.friedsoftware.struts;
> 
> import java.util.HashMap;
> 
> import javax.servlet.http.HttpServletRequest;
> import javax.servlet.http.HttpServletResponse;
> 
> import org.apache.struts.action.Action;
> import org.apache.struts.action.ActionForm;
> import org.apache.struts.action.ActionForward;
> import org.apache.struts.action.ActionMapping;
> import org.apache.struts.config.ActionConfig;
> import org.apache.struts.util.WildcardHelper;
> 
> /**
>  * @author David
>  * @struts.action path = "/hello" validate = "false" name =
>  "DavidForm" * @struts.action path = "/hi_there" validate = "false"
>  * @struts.action path = "/testpatt/**" validate = "false"
>  * @struts.action-forward name = "success" path = "/index.jsp"
>  */
> 
> public class ActionExample extends Action {
>      public ActionForward execute(ActionMapping mapping, ActionForm
>      form, 
>                HttpServletRequest request, HttpServletResponse
>                response) throws Exception {
> 
>           int counter = 0, pattern[];
>           boolean result;
>           ActionConfig[] aConfig =
>           mapping.getModuleConfig().findActionConfigs(); HashMap hm =
>           new HashMap(); String myPath = request.getPathInfo();
>           WildcardHelper wh = new WildcardHelper();
> 
>           while (counter < aConfig.length) {
>                pattern =
>                wh.compilePattern(aConfig[counter].getPath()); 
> 
>                // ******** HERE IT COMES!!!! **********
>                result = wh.match(hm, myPath, pattern);
>                if (result) {
> 
>                     // ****** Okay, now what do YOU want
>                     // to do here? Now that you've found
>                     // the regular pattern, or wildcard
>                     // expression?
>                     break;
>                }
>                counter++;
>           }
>           return (mapping.findForward("success"));
>      };
> }
> // End of Class
> 
> Regards,
> David
> 
> -----Original Message-----
> From: news [mailto:news@sea.gmane.org]On Behalf Of Alan Pocklington
> Sent: Friday, October 15, 2004 10:55 AM
> To: user@struts.apache.org
> Subject: Re: [REPOST] Get Raw Action Path.
> 
> 
> Thanks for the pointer.  I've been looking through the
> RequestProcessor source without any luck so far.  Maybe I'll stumble
> across it soon. 
> 
> Erik Weber <er...@mindspring.com> wrote in
> news:416FDF87.2040203@mindspring.com:
> 
>> I don't know the specific answer to your question, but I learned a
>> lot by writing a method that prints out the key and value for every
>> attribute in every scope, and calling that method at various points
>> along the RequestProcessor timeline (by overriding various methods of
>> RequestProcessor). RequestProcessor invokes a dozen or so methods on
>> itself for every request, and during that time many attributes are
>> set and/or removed from various scopes.
>>
>> I do recall that the controller Servlet mapping was available. Not
>> sure about specific Action mappings.
>>
>> Erik
>>
>>
>>
>> Alan Pocklington wrote:
>>
>>>I have an Action defined as:
>>>
>>>  <action
>>>      path="/myaction/**"
>>>      type="...MyAction"/>
>>>
>>>Within the Action class itself I want to get at the path attribute as
>>>defined in the config file, i.e.
>>>/myaction/**.
>>>
>>>I can get the requested path, for example /myaction/somepath/xxx.do
>>>via actionMapping.getPath() but not the original path to which the
>>>action was mapped.  Is there any way I can get at this?
>>>
>>>Thanks in advance.
>>>
>>>
>>>---------------------------------------------------------------------
>>>To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>>>For additional commands, e-mail: user-help@struts.apache.org
>>>
>>>
>>>
>>>
>>
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
> 



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


RE: [REPOST] Get Raw Action Path.

Posted by "David G. Friedman" <hu...@ix.netcom.com>.
A solution in Struts v1.2.4 is at hand, too bad it's not some quick method
call like getPattern().  If you can figure out what I did, you can use it.
:)  Seriously, I obtained a raw list of Action Mappings (unprocessed paths,
as in Struts config files), then I used a Struts util class WildCardHelper
to match the patterns, and viola!

WARNING: Since my webapp has only one struts config file, I haven't tested
this code with Modules.  If it doesn't work and you have modules, you'll
have to figure out how to check the ActionConfig's in each module's
ModuleConfig (and how to get each modules ModuleConfig).

WARNING #2: Use the below code at your own risk.

WARNING #3: If I find you using my package name, I'm going to beat you with
my copy of Struts In Action! (Am I joking?)

package com.friedsoftware.struts;

import java.util.HashMap;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.config.ActionConfig;
import org.apache.struts.util.WildcardHelper;

/**
 * @author David
 * @struts.action path = "/hello" validate = "false" name = "DavidForm"
 * @struts.action path = "/hi_there" validate = "false"
 * @struts.action path = "/testpatt/**" validate = "false"
 * @struts.action-forward name = "success" path = "/index.jsp"
 */

public class ActionExample extends Action {
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {

		int counter = 0, pattern[];
		boolean result;
		ActionConfig[] aConfig = mapping.getModuleConfig().findActionConfigs();
		HashMap hm = new HashMap();
		String myPath = request.getPathInfo();
		WildcardHelper wh = new WildcardHelper();

		while (counter < aConfig.length) {
			pattern = wh.compilePattern(aConfig[counter].getPath());

			// ******** HERE IT COMES!!!! **********
			result = wh.match(hm, myPath, pattern);
			if (result) {

				// ****** Okay, now what do YOU want
				// to do here? Now that you've found
				// the regular pattern, or wildcard
				// expression?
				break;
			}
			counter++;
		}
		return (mapping.findForward("success"));
	};
}
// End of Class

Regards,
David

-----Original Message-----
From: news [mailto:news@sea.gmane.org]On Behalf Of Alan Pocklington
Sent: Friday, October 15, 2004 10:55 AM
To: user@struts.apache.org
Subject: Re: [REPOST] Get Raw Action Path.


Thanks for the pointer.  I've been looking through the RequestProcessor
source without any luck so far.  Maybe I'll stumble across it soon.

Erik Weber <er...@mindspring.com> wrote in
news:416FDF87.2040203@mindspring.com:

> I don't know the specific answer to your question, but I learned a lot
> by writing a method that prints out the key and value for every
> attribute in every scope, and calling that method at various points
> along the RequestProcessor timeline (by overriding various methods of
> RequestProcessor). RequestProcessor invokes a dozen or so methods on
> itself for every request, and during that time many attributes are set
> and/or removed from various scopes.
>
> I do recall that the controller Servlet mapping was available. Not
> sure about specific Action mappings.
>
> Erik
>
>
>
> Alan Pocklington wrote:
>
>>I have an Action defined as:
>>
>>  <action
>>      path="/myaction/**"
>>      type="...MyAction"/>
>>
>>Within the Action class itself I want to get at the path attribute as
>>defined in the config file, i.e.
>>/myaction/**.
>>
>>I can get the requested path, for example /myaction/somepath/xxx.do
>>via actionMapping.getPath() but not the original path to which the
>>action was mapped.  Is there any way I can get at this?
>>
>>Thanks in advance.
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>>For additional commands, e-mail: user-help@struts.apache.org
>>
>>
>>
>>
>



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


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


Re: [REPOST] Get Raw Action Path.

Posted by Alan Pocklington <aj...@pocko.freeserve.co.uk>.
Thanks for the pointer.  I've been looking through the RequestProcessor 
source without any luck so far.  Maybe I'll stumble across it soon.

Erik Weber <er...@mindspring.com> wrote in
news:416FDF87.2040203@mindspring.com: 

> I don't know the specific answer to your question, but I learned a lot
> by writing a method that prints out the key and value for every 
> attribute in every scope, and calling that method at various points 
> along the RequestProcessor timeline (by overriding various methods of 
> RequestProcessor). RequestProcessor invokes a dozen or so methods on 
> itself for every request, and during that time many attributes are set
> and/or removed from various scopes.
> 
> I do recall that the controller Servlet mapping was available. Not
> sure about specific Action mappings.
> 
> Erik
> 
> 
> 
> Alan Pocklington wrote:
> 
>>I have an Action defined as:
>>
>>  <action 
>>      path="/myaction/**"  
>>      type="...MyAction"/>
>>      
>>Within the Action class itself I want to get at the path attribute as 
>>defined in the config file, i.e. 
>>/myaction/**.  
>>
>>I can get the requested path, for example /myaction/somepath/xxx.do
>>via actionMapping.getPath() but not the original path to which the
>>action was mapped.  Is there any way I can get at this?
>>
>>Thanks in advance. 
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>>For additional commands, e-mail: user-help@struts.apache.org
>>
>>
>>  
>>
> 



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


Re: [REPOST] Get Raw Action Path.

Posted by Erik Weber <er...@mindspring.com>.
I don't know the specific answer to your question, but I learned a lot 
by writing a method that prints out the key and value for every 
attribute in every scope, and calling that method at various points 
along the RequestProcessor timeline (by overriding various methods of 
RequestProcessor). RequestProcessor invokes a dozen or so methods on 
itself for every request, and during that time many attributes are set 
and/or removed from various scopes.

I do recall that the controller Servlet mapping was available. Not sure 
about specific Action mappings.

Erik



Alan Pocklington wrote:

>I have an Action defined as:
>
>  <action 
>      path="/myaction/**"  
>      type="...MyAction"/>
>      
>Within the Action class itself I want to get at the path attribute as 
>defined in the config file, i.e. 
>/myaction/**.  
>
>I can get the requested path, for example /myaction/somepath/xxx.do via 
>actionMapping.getPath() but not the original path to which the action was 
>mapped.  Is there any way I can get at this?
>
>Thanks in advance. 
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>For additional commands, e-mail: user-help@struts.apache.org
>
>
>  
>

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