> -----Original Message----- > From: Erik Weber [mailto:[EMAIL PROTECTED] > Sent: Wednesday, July 21, 2004 11:32 AM > To: Struts Users Mailing List > Subject: Re: Tag question > > > Sorry, I should have explained better what I am doing. > > My controller Servlet is mapped to /services/* > > All requests for JSP pages go through the controller, via action > mappings. The actions have paths like: > > /usecase/view_edit_page > /usecase/save_existing_record > /usecase/view_add_page > /usecase/add_new_record > > So the full links look like: > > <context>/services/usecase/view_edit_page > > meanhwhile other resources have paths like: > > <context>/images/some_image.gif > > This keeps other resources out of the scope of the controller (and > perhaps into the scope of some other servlet). Also, direct > JSP access > is prohibited. > > So in places where I am building hyperlinks (within JSPs), I > need to get > "/services" into each link, in front of the action URI, but > behind the > context. And I want to do this in a portable way (in case the Servlet > mapping changes).
If you use html:link and forwards then you can do whatever you want, and won't have to change the links themselves. This would be pretty portable as well. > > So the idea is to put something like <html:rewrite > page="${controller_path}<action_URI_here>"> which literally would be > "/services" + "/usecase/action" or > "/services/usecase/action". Using the > "page" attribute to the tag makes it come out right > ("/context/services/usecase/action"). > > (When I say "usecase" here I really should say "collection of > usecases" > or "function group" to be more accurate). > > I would be interested in hearing other mapping strategies. I map jsp and directories by actor rather then use case, or use case package. Makes everything easier (especially declaritive security, then again I've kept the *.do mapping, rather then what you're doing. That would make your url something like services/actor/useCase, which doesn't get around your problem. > For now I'm > making sure the JSP can call a method or access a variable > that returns > "/services". > > Erik > > > > Christian D Hahn wrote: > > > Are you mapping the jsp to /services in the web.xml? if you do, > > getServletPath should return the path you are looking for. > > > > <servlet> > > <servlet-name>jsp</servlet-name> > > <jsp-file>/usecase/page.jsp</jsp-file> > > </servlet> > > > > <servlet-mapping> > > <servlet-name>jsp</servlet-name> > > <url-pattern>/services</url-pattern> > > </servlet-mapping> > > > > -Chris > > > > Erik Weber wrote: > > > >> Hmm I must be doing something wrong. That's giving me the > same value > >> as Erez's example. Strange, I would have expected it to give me > >> "/services". I wonder how I am causing it to give me > >> "/usecase/page.jsp". > >> > >> atta-ur rehman wrote: > >> > >>> Hi Erik, > >>> > >>> This one worked for me: > >>> > >>> <c:set var="v"> > >>> <%= request.getServletPath() %> > >>> </c:set> > >>> > >>> <c:out value="${v}"/> > >>> <bean:write name="v"/> > >>> > >>> HTH, > >>> > >>> ATTA > >>> > >>> On Tue, 20 Jul 2004 16:20:30 -0400, Erik Weber > >>> <[EMAIL PROTECTED]> wrote: > >>> > >>> > >>>> How can I set a variable (I assume with c:set) that will > hold the > >>>> value > >>>> of request.getServletPath, so that I can use it in el tags? > >>>> > >>>> Thanks, > >>>> Erik > >>>> > >>>> > --------------------------------------------------------------------- > >>>> To unsubscribe, e-mail: [EMAIL PROTECTED] > >>>> For additional commands, e-mail: [EMAIL PROTECTED] > >>>> > >>>> > >>> > >>> > >>> > --------------------------------------------------------------------- > >>> To unsubscribe, e-mail: [EMAIL PROTECTED] > >>> For additional commands, e-mail: [EMAIL PROTECTED] > >>> > >>> > >>> > >>> > >> > >> > --------------------------------------------------------------------- > >> To unsubscribe, e-mail: [EMAIL PROTECTED] > >> For additional commands, e-mail: [EMAIL PROTECTED] > >> > > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]