Thanks for all the input-- sorry it took so long to draw out the central issue. I guess what I'll do next time is just post a patch first, rather than doing a survey for a bug fix.
I know I can always subclass or specify a dummy mapping or just not use <html:form>, but this is the *only* problem for which I've needed to contemplate using regular HTML tags or touching my Struts distribution over three commercial-use applications. So the reason I've been persistent on this is that it's one of the few problems I've ever had with the framework. I still think it's a bug, but I guess time will tell if anyone else agrees. Maybe it'll be a non-issue in 1.2. Struts is definitely the best web app framework I've used, and one little thing won't stop me from using it. Thanks again. -JT > -----Original Message----- > From: David Graham [mailto:dgraham1980@;hotmail.com] > Sent: Tuesday, October 29, 2002 12:23 PM > To: [EMAIL PROTECTED] > Subject: RE: [SURVEY] HREF attribute for FormTag > > > I understand the behavior you want and the reason you want > it. You stated > that : > > "both Struts and the server bridge are adding the > contextPath, so I get > the form submitted to "appserver.com/myapp/myapp/login.do" > > I don't know what a server bridge is but this sounds like an > architecture > problem, not a Struts problem. > > I suggest you either make your server bridge not append the > context path or > follow Ted's suggestion and subclass the FormTag to do what you want. > > David > > > > > >From: "Taylor, Jason" <[EMAIL PROTECTED]> > >Reply-To: "Struts Developers List" <[EMAIL PROTECTED]> > >To: "'Struts Developers List'" <[EMAIL PROTECTED]> > >Subject: RE: [SURVEY] HREF attribute for FormTag > >Date: Tue, 29 Oct 2002 08:10:25 -0800 > > > > > > > > > -----Original Message----- > > > From: David Graham [mailto:dgraham1980@;hotmail.com] > > > Sent: Monday, October 28, 2002 5:54 PM > > > To: [EMAIL PROTECTED] > > > Subject: RE: [SURVEY] HREF attribute for FormTag > > > > > > > > > It seems that the only use of the requested behavior is to > > > allow a struts > > > app to submit a form to a different app. > > > >No, you keep ignoring my descriptions of my situation. As > I've said since > >I > >logged bug #12600, the primary problem for me is architectural. > > > >I have a front-end web server which receives a request (say > >"myappName.com/login.do"), sees the "*.do" pattern and > forwards it to a > >back-end servlet container with a context path prepended > >("appserver.com/myapp/login.do"). There are various reasons > to do this, > >but > >fundamentally it is easier for the IT guy (according to him) > to manage and > >control access to an app-specific domain name than an > app-specific path > >under a generic domain name. What happens to me when I use > a FormTag is > >that both Struts and the server bridge are adding the > contextPath, so I get > >the form submitted to "appserver.com/myapp/myapp/login.do". > > > >I don't know if I can state it more simply than to say I > wish the Struts > >FormTag provided me with a mechanism to leave off the > contextPath, which as > >far as I can tell is totally unnecessary anyway. My > submissions work fine > >if I do <FORM ACTION="login.do"> or <FORM > ACTION="/myapp/login.do"> so why > >does FormTag.getActionMappingUrl() always prepend the > useless contextPath? > >The first way is better because it leaves the responsibility > for creating > >the rest of the path up to the user's browser. > > > >The fundamental point is that this behavior of FormTag > prevents the use of > >page-relative URLs (i.e., those that don't begin with a > slash) as action > >attributes of the HTML FORM tag. This happens to be a problem for me > >because my architecture demands that I use page-relative links for > >everything. Plain vanilla Struts thus limits my > architecture choices, > >which > >seems like a bad thing for a generic framework to do. > Moreover, as far as > >I > >can tell, using page-relative links is a best practice because the > >contextPath can vary from installation to installation. > > > >All I wanted was some feedback on how to enable what could > be an important > >feature for those developing on multi-tiered architectures. > Thanks as > >always for your feedback. > > > >-JT > > > > > > > As always, If I missed something please let me know. > > > > > > David > > > > > > > > > > > > > > > > > > > > > >From: "Taylor, Jason" <[EMAIL PROTECTED]> > > > >Reply-To: "Struts Developers List" > <[EMAIL PROTECTED]> > > > >To: "'Struts Developers List'" <[EMAIL PROTECTED]> > > > >Subject: RE: [SURVEY] HREF attribute for FormTag > > > >Date: Mon, 28 Oct 2002 15:29:11 -0800 > > > > > > > >Thanks for your comments-- I have some responses below. > > > > > > > > > -----Original Message----- > > > > > From: David Graham [mailto:dgraham1980@;hotmail.com] > > > > > Sent: Monday, October 28, 2002 2:43 PM > > > > > To: [EMAIL PROTECTED] > > > > > Subject: RE: [SURVEY] HREF attribute for FormTag > > > > > > > > > > > > > > > The statement that hardcoding the context path in jsps is a > > > > > bad idea is > > > > > absolutely true. However, struts does not hardcode the > > > context path. > > > > > > > > > > Hardcoded > > > > > <form action="/context/account/add.do"> > > > > > > > > > > Dynamic > > > > > <html:form action="/account/add.do"> > > > > > > > > > > Struts inserts the context path dynamically at runtime > > > which is most > > > > > definitely not hardcoding. > > > > > > > >It is an algorithm for hardcoding. Compare the behavior of > > > FormTag with > > > >what the browser does if you leave the context path out-- I > > > simply to let > > > >the browser handle things. Here's my version of your form tag: > > > > > > > >Truly Dynamic > > > ><form action="add.do"> > > > > > > > > > > > > > > I'm still not convinced we need the behavior you desire. The > > > > > value of > > > > > struts html tags comes from the ability to use a form bean to > > > > > populate input > > > > > elements. Without <html:form> being able to use a form bean > > > > > the tags are > > > > > pretty useless. How would <html:form> know which bean to > > > use given > > > > > > > > > > <html:form action="login.do">? > > > > > > > > > > > > >The way it always does-- if you look at getActionMappingName and > > > >getActionMappingUrl, they both handle "login.do" just as > > > well as "/login". > > > >There is no problem getting the form bean. All I want is to > > > rid myself of > > > >the context path in the HTML form tag generated by > Struts' FormTag. > > > > > > > > > David > > > > > > > > > > > > >-JT > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >From: "Taylor, Jason" <[EMAIL PROTECTED]> > > > > > >Reply-To: "Struts Developers List" > > > <[EMAIL PROTECTED]> > > > > > >To: "'Struts Developers List'" > <[EMAIL PROTECTED]> > > > > > >Subject: RE: [SURVEY] HREF attribute for FormTag > > > > > >Date: Mon, 28 Oct 2002 13:54:29 -0800 > > > > > > > > > > > >I thought I addressed the form bean instance issue in my > > > response to > > > > > >Craig's > > > > > >post. The 'action' attribute would still work for finding > > > > > the form bean > > > > > >since getActionMappingName would return the same thing it > > > > > always has. What > > > > > >I'm talking about would *absolutely* support the form-bean > > > > > identification > > > > > >behavior of the existing FormTag. > > > > > > > > > > > >I addressed the motivation for the proposal in the original > > > > > posting. Bug > > > > > >#12600 includes a description of a bridged architecture > > > > > where a front end > > > > > >web server forwards requests to a back end servlet > > > > > container, expanding an > > > > > >app-specific domain name into a generic domain name > > > followed by the > > > > > >application context path. This architecture works nicely so > > > > > far as your > > > > > >links are all relative. FormTag breaks this by always > > > > > prepending context > > > > > >path. > > > > > > > > > > > >Moreover, I believe the current prepending behavior is not a > > > > > best practice > > > > > >for JSPs, and I don't think I'm the only one who would see > > > > > it this way. As > > > > > >an article cited on the JSTL specification home page > > > > > >(http://www.onjava.com/pub/a/onjava/2002/08/14/jstl1.html?pag > > > > > e=3) by Hans > > > > > >Bergsten states while describing the <c:url> tag: > > > > > > "relative URLs in HTML elements must either be relative > > > > > to the page > > > > > >that contains them or to the root directory of the server > > > > > (if they start > > > > > >with a slash). The first part of a URL path for a JSP page > > > > > is called the > > > > > >context path, and it may vary from installation to > > > > > installation. You should > > > > > >therefore avoid hard-coding the context path in the > JSP pages." > > > > > > > > > > > >What I'm trying to determine is whether the best means of > > > > > achieving support > > > > > >for the 'page-relative' URLs Bergsten describes is by adding > > > > > an 'href' > > > > > >attribute or changing the FormTag so that it wouldn't > > > > > prepend the context > > > > > >path unless the 'action' attribute started with a slash. I > > > > > think the > > > > > >latter > > > > > >is better, but I'd like to know if anyone has an opinion > > > > > before I offer a > > > > > >patch. Any ideas? > > > > > > > > > > > >-JT > > > > > > > > > > > >-----Original Message----- > > > > > >From: David Graham [mailto:dgraham1980@;hotmail.com] > > > > > >Sent: Monday, October 28, 2002 12:40 PM > > > > > >To: [EMAIL PROTECTED] > > > > > >Subject: RE: [SURVEY] HREF attribute for FormTag > > > > > > > > > > > > > > > > > >You still haven't addressed why you want to do this. If > > > > > <html:form> can't > > > > > >lookup the form bean because the action doesn't match an > > > > > action mapping, > > > > > >then the other html form related tags are basically useless. > > > > > You could > > > > > >just > > > > > > > > > > > >use straight html for this. > > > > > > > > > > > >David > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >From: "Taylor, Jason" <[EMAIL PROTECTED]> > > > > > > >Reply-To: "Struts Developers List" > > > <[EMAIL PROTECTED]> > > > > > > >To: "'Struts Developers List'" > <[EMAIL PROTECTED]> > > > > > > >Subject: RE: [SURVEY] HREF attribute for FormTag > > > > > > >Date: Mon, 28 Oct 2002 12:21:51 -0800 > > > > > > > > > > > > > >My first thought was you could use the 'action' to > > > > > identify the form bean > > > > > > >and the 'href' to specify a certain url to submit > the form to. > > > > > > > > > > > > > >But then I looked at the JSTL <c:url> tag and it seems > > > > > that a better > > > > > > >algorithm would be to prepend the context path only when > > > > > the 'action' > > > > > > >begins > > > > > > >with a slash ("/"). This seems better, and here's how it > > > > > would work: > > > > > > > > > > > > > ><html:form action="login.do"> > > > > > > > would become > > > > > > ><FORM ACTION="login.do"> > > > > > > > > > > > > > >and > > > > > > > > > > > > > ><html:form action="/login"> or <html:form > action="/login.do"> > > > > > > > would become > > > > > > ><FORM ACTION="/myApp/login.do"> > > > > > > > or > > > > > > ><FORM ACTION="/myApp/module/login.do"> > > > > > > > as appropriate > > > > > > > > > > > > > >Perhaps if this were the right behavior, we would add a > > > > > 'contextRelative' > > > > > > >attribute to allow a form to be submitted across > > > modules as with > > > > > > >ActionForward. > > > > > > > > > > > > > > > > > > > > >-JT > > > > > > > > > > > > > > > > > > > > >-----Original Message----- > > > > > > >From: Craig R. McClanahan [mailto:craigmcc@;apache.org] > > > > > > >Sent: Monday, October 28, 2002 11:13 AM > > > > > > >To: Struts Developers List > > > > > > >Subject: Re: [SURVEY] HREF attribute for FormTag > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >On Mon, 28 Oct 2002, Taylor, Jason wrote: > > > > > > > > > > > > > > > Date: Mon, 28 Oct 2002 10:38:21 -0800 > > > > > > > > From: "Taylor, Jason" <[EMAIL PROTECTED]> > > > > > > > > Reply-To: Struts Developers List > > > <[EMAIL PROTECTED]> > > > > > > > > To: 'Struts Developers List' > <[EMAIL PROTECTED]> > > > > > > > > Subject: [SURVEY] HREF attribute for FormTag > > > > > > > > > > > > > > > > Hi all-- > > > > > > > > > > > > > > > > There have been two bugs (#12600, #13871) logged > > > > > against the form tag > > > > > > >for > > > > > > > > the behavior of its getActionMappingUrl method, which > > > > > always prepends > > > > > > >the > > > > > > > > context path. > > > > > > > > > > > > > > > > Other html tags that produce a URL that is sent to the > > > > > browser such as > > > > > > > > LinkTag and ImgTag give the user at least the option of > > > > > specifying > > > > > > >precisely > > > > > > > > the URL sent, but FormTag does not. See bug #12600 for > > > > > an example of > > > > > >an > > > > > > > > architecture where this could be a problem, or consider > > > > > the case of > > > > > > >someone > > > > > > > > building a Struts application that submits a form to a > > > > > third party for > > > > > > > > processing, which just occurred to me as > another test case. > > > > > > > > > > > > > > > > Does anyone oppose the idea of adding an 'href' > > > > > attribute to FormTag, > > > > > > >along > > > > > > > > the lines of the 'href' attribute possessed by the > > > > > LinkTag, that can > > > > > >be > > > > > > >used > > > > > > > > instead of the 'action' to determine where the form is > > > > > submitted? If > > > > > > >so, > > > > > > >do > > > > > > > > you have an alternative that allows me to prevent the > > > > > context path > > > > > >from > > > > > > > > being prepended? If not, I'd be happy to > submit a patch. > > > > > > > > > > > > > > > > > > > > > >One of the things you'd give up when doing this is the > > > > > ability of Struts > > > > > > >to identify the associated form bean. Therefore, it seems > > > > > like this > > > > > >would > > > > > > >only be of use in constructing a form to be submitted to a > > > > > non-Struts app > > > > > > >-- and, for that, you can just use a normal HTML <form> > > > > > element directly. > > > > > > >Am I missing something? > > > > > > > > > > > > > > > -JT > > > > > > > > > > > > > > > > > > > > > >Craig > > > > > > > > > > > > > > > > > > > > >-- > > > > > > >To unsubscribe, e-mail: > > > > > > ><mailto:struts-dev-unsubscribe@;jakarta.apache.org> > > > > > > >For additional commands, e-mail: > > > > > > ><mailto:struts-dev-help@;jakarta.apache.org> > > > > > > > > > > > > > > > > > > >_________________________________________________________________ > > > > > >Get a speedy connection with MSN Broadband. Join now! > > > > > >http://resourcecenter.msn.com/access/plans/freeactivation.asp > > > > > > > > > > > > > > > > > >-- > > > > > >To unsubscribe, e-mail: > > > > > ><mailto:struts-dev-unsubscribe@;jakarta.apache.org> > > > > > >For additional commands, e-mail: > > > > > ><mailto:struts-dev-help@;jakarta.apache.org> > > > > > > > > > > > > > > > > _________________________________________________________________ > > > > > Choose an Internet access plan right for you -- try MSN! > > > > > http://resourcecenter.msn.com/access/plans/default.asp > > > > > > > > > > > > > > > -- > > > > > To unsubscribe, e-mail: > > > > > <mailto:struts-dev-unsubscribe@;jakarta.apache.org> > > > > > For additional commands, e-mail: > > > > > <mailto:struts-dev-help@;jakarta.apache.org> > > > > > > > > > > > > > > _________________________________________________________________ > > > Protect your PC - get McAfee.com VirusScan Online > > > http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963 > > > > > > > > > -- > > > To unsubscribe, e-mail: > > > <mailto:struts-dev-unsubscribe@;jakarta.apache.org> > > > For additional commands, e-mail: > > > <mailto:struts-dev-help@;jakarta.apache.org> > > > > > > _________________________________________________________________ > Protect your PC - get McAfee.com VirusScan Online > http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963 > > > -- > To unsubscribe, e-mail: > <mailto:struts-dev-unsubscribe@;jakarta.apache.org> > For additional commands, e-mail: > <mailto:struts-dev-help@;jakarta.apache.org> >