We consider Wildcard Methods and DMI to be distinct strategies, and I
would suggest that an application use one or the other. But, Wildcards
and DMI can co-exist if the Wildcard URIs don't use the ! character.

HTH, Ted
<http://www.husted.com/ted/blog/>

On 4/9/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
After refactoring my app to use the S2 Dynamic Method Invocation as follows:

        <action name="course_*" method="{1}" class="course">
            <result name="input">/pages/course.jsp</result>
            <result>/pages/course.jsp</result>
        </action>

I am discovering that both
http://localhost:8080/dsms/course_create.action AND
http://localhost:8080/dsms/course!create.action work the same way.  Is this
a feature?  This is the sort of voodoo that should probably be cast out!

Scott



On 4/6/07, Ted Husted <[EMAIL PROTECTED]> wrote:
>
> There's a feature embedded in WebWork that lets the "!" character
> invoke a method other than execute. In WebWork, it doesn't really have
> a name. During the S2 discussions, we coined the term "dynamic method
> invocation" to describe how WW/S2 use the ! notation.
>
> For Struts 2, we added a switch to disable Dynamic Method Invocation"
> for two reasons. First, it can cause security issues if POJO actions
> are used. Second, it overlaps with the Wildcard feature that we
> brought over from Struts 1 (and from Cocoon before that).
>
> S2 does support  "dynamic method invocation", but there are problems
> with the implementation. Essentially, the code scans the action name
> for a "!", and finding one, tricks the framework into invoking the
> other method instead of execute. The other method is invoked, but it
> uses the same configuration as the execute method, including
> validations.  The framework "believes" it is invoking the "Category"
> action with the execute method.
>
> The Wildcard feature is implemented differently. When a Wildcard
> action is invoked, the framework acts as if the matching action had
> been hardcoded. The framework "believes" it's executing
> "Category!create" and "knows" it is executing the "create" method.
> This permits us to add specific validations, localizations, and type
> converters, for a Wildcard action, just like a conventional action.
>
> If someone were to implement [WW-1522], then the  "dynamic method
> invocation" approach could have its own validations too. Here, the
> notion is to generate carbon actions for qualifying methods. The
> invocation would no longer be dynamic, because there would be an
> actual action in the configuration, but any method could be invoked.
>
> * https://issues.apache.org/struts/browse/WW-1522
>
> My first pass at implementing [WW-1522] didn't work out. Though, I'm
> wondering if whatever we do for the codebehind plugin might work here
> too. At this point, I will probably never get to it myself, but
> perhaps someone will pickup the baton.
>
> In my own applications, I tend to use the underscore ("_") as a
> Wildcard separator, to avoid confusion with the WebWork bang. In
> practice, these are the only two special characters that work without
> causing JavaScript issues.
>
> HTH, Ted
> <http://www.husted.com/ted/blog/>
>
>
> On 4/6/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> > since '!' is already a special character which specifies the method name
> > automatically see struts.properties configuration file for more details
> > about how to enable/disable dynamic method invocation
> >
> > Can you explain this?  I read all I could find on this topic and their
> was
> > discussion dating back to early XWorks changes, however I could not make
> > sense out of it.  I do recall changing my struts.properties and it does
> seem
> > to be working as I hoped.  What is meant by "already a special
> character?"
> >
> > Thanks,
> > Scott
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>


--
Scott
[EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to