I just noticed something strange that I believe to be a minor bug, but I'm not sure which is intended to be the correct solution.
RequestProcessor.processMapping() tries to find the ActionMapping for the current request. Once found, the mapping is stored in a request attribute, viz Globals.MAPPING_KEY. So far, so good. Now, further down the line, in RequestUtils.populate(), IFF the request is a multipart request, the mapping request attribute is removed from the request. This is the part that's odd. I believe the original reason for storing the mapping in a request attribute was so that it could be obtained in populate() when processing a multipart request, without having to pass it as a parameter all the way down. In fact, the only code that accesses the attribute is shortly above the only place that it's removed from the request. The catch is that it isn't removed for any other type of request. Now, obviously, we could fix this in one of two ways. We could either have populate() always remove it, or never remove it. Although the former is better matched with the original intent of the attribute, it's possible that people have assumed that it is always available, and written code with that in mind. In fact, the ConfigHelper class (not used, and marked as experimental) seems to make this assumption, even within the Struts code base. Therefore, to be on the safe side, I plan on removing the call to removeAttribute() from populate(), thus guaranteeing that the mapping is available regardless of the type of request being processed. Comments? -- Martin Cooper --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]