ActionMappings don't have names, but use an identifier that is determined by the Action's URI. The URIs are virtual identifiers, but they are not true logical identifiers. If the URIs much change for any reason (e.g. the security scheme is modified), then all the JSPs that refer to a mapping must be updated.
Elsewhere in the framework, we offer developers the opportunity to choose whether an attribute refers to a "path" or a logical name, examples being the input property of the ActionMapping and the formset name property in the Validator package. In the case of ActionForwards, we allow a logical name to completely encapsulate a URI. This has been a useful feature and leads to the cability to rearrange resources without editing JSP code. We could offer the same flexiblity for ActionMappings by adding a property that gives the ActionMapping a true logical name not coupled to any other usage (e.g. a URI). Since the "name" property for the ActionMapping is in use, I would suggest "actionName" be used to store the logical name. If other components in the framework can refer to the logical name, then the path (which is coupled to the system URI) can be changed without editing JSP code. Following the example of the IncludeForward, a controller/processor property could indicate whether the "action" attribute refers to the action.path or the action.actionName (the default being "path" to retain the original behavior). Other components, like the <html:link> tag, could be extended to allow reference to the action property (along with forward and page). Developers could then refer to the action by name, as we now do with forwards. This is important, since the new best practice of passing control through an ActionMapping can lead to teams defining both an ActionForward and ActionMapping to represent a single entry point. Given a logical reference to the ActionMapping, it becomes much easier to use the ActionMappings as the primary entry point to an application's feature set. The ActionForwards then devolve back to being the primary exit point. Right now, since ActionFowards are the only logical URI wrapper we have, there is a tendency to use ActionForwards for both entry and exit points, a practice which may conflict with the orignal design philosophy. A common setup like this <forward name="viewRecord" path="/record/View.jsp"/> <html:link forward="viewRecord"> ... can become <action path="/record/View" mapping="viewRecord" forward="/record/View.jsp"/> <html:link action="viewRecord"> ... in the latter case, the link would resolve to $MODULE/record/View.do, which would in turn forward to the destination resource, $MODULE/record/View.jsp. For a HTML form, we could have ActionMappings like <action path="/record/Store" actionName="storeRecord" type="app.Store.Record" ... /> and tags like <html:form action="storeRecord"> ... Note that we are using a logical name for both the link and the form tags, and not a token that is coupled to a URI. If the URI changes for any reason, say we want to secure some resources under /admin/*, we can do things like this: <action path="/admin/record/Store" actionName="storeRecord" type="app.Store.Record" ... /> and not have to change any JSP code. Of course, the roles property in the Struts 1.1 ActionMapping mitigates this particular example. But the point that ActionMappings should have independent identifiers still follows. My short term plan would be to implement this scheme and test it with my own applications before proposing an actual patch. Depending on other events, this patch could be applied to Struts 1.1 (to finish what we started in with inputForward) or held for Struts 1.2. I suggest that as part of the post 1.1 Struts discussions, we might consider an early release of a Struts 1.2 (weeks rather than months) to catch many of the "later" items in Bugzilla. More aggressive changes to the code base to leverage Servlet 2.3, later JVMs, and so forth, might fall under the heading of Struts 2.x (or some sexy codename). -Ted. -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>