You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Ralph Grove <ra...@gmail.com> on 2017/04/27 11:56:21 UTC

Re: Struts2 namespace confusion

Matt, did this solve your problem? I'm having the same issue with namespaces. With this example, I can request ".../Home", ".../Home/Alpha", ".../Alpha/Alpha/Alpha", etc.    The action executes in each case, but if the URL contains more than one slash, the relative path is messed up for files included in the JSP.

Ralph Grove

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    
    <constant name="struts.mapper.alwaysSelectFullNamespace" value="true" />
    <constant name="struts.enable.SlashesInActionNames" value="false" />
    
    <package name="main" extends="struts-default">  
        <default-action-ref name="NotFound"/>
        
        <global-results>
            <result name="error">/error.jsp</result>
        </global-results>
 
        <global-exception-mappings>
            <exception-mapping exception="java.lang.Exception" result="error"/>
        </global-exception-mappings>
 
        <action name="NotFound">
            <result>/error.jsp</result>
        </action> 
    
        <!-- Sidebar menu item and static link actions -->
        <action name="Home" class="com.opensymphony.xwork2.ActionSupport">
            <result>/WEB-INF/jsp/index.jsp</result>
        </action>
        <action name="Alpha" class="com.opensymphony.xwork2.ActionSupport">
            <result>/WEB-INF/jsp/alpha.jsp</result>
        </action>
        <action name="Beta" class="com.opensymphony.xwork2.ActionSupport">
            <result>/WEB-INF/jsp/beta.jsp</result>
        </action>

                               
        <!-- Actions -->
        <action name="AnAction" class="action.AnAction">
            <result name="success">/WEB-INF/jsp/index.jsp</result>
            <result name="input">/WEB-INF/jsp/beta.jsp</result>
        </action> 
        
    </package>
</struts>

On 2014-05-28 21:03 (-0400), Matt Williams <ma...@yahoo.com> wrote: 
> 
> 
> I found the following property: struts.mapper.alwaysSelectFullNamespace (which is false by default).
> 
> To me, it should be 'true' to match how the documentation explains matching actions to namespaces and falling back to default namespace.
> 
> 
> 
> 
> 
> ------------------------------
> On Sat, May 24, 2014 8:51 PM CDT Dave Newton wrote:
> 
> >This isn't the struts.enable.SlashesInActionNames = false setting?
> >
> >Dave
> >
> >
> >
> >On Sat, May 24, 2014 at 2:50 PM, Lukasz Lenart <lu...@apache.org>wrote:
> >
> >> Can you share your struts.xml file?
> >>
> >> Maybe you have defined default-action-ref or wildcard mapping?
> >>
> >> 2014-05-24 18:58 GMT+02:00 Matt Williams <ma...@yahoo.com>:
> >> >
> >> >
> >> > No, there are no other 'search' actions defined anywhere else.
> >> >
> >> >
> >> >
> >> > ------------------------------
> >> > On Sat, May 24, 2014 11:46 AM CDT Ken McWilliams wrote:
> >> >
> >> >What he explains is likely the result of a search action also mapped in
> >> the
> >> >default namespace.
> >> >On 2014-05-24 9:35 AM, "John Patrick" <nh...@gmail.com> wrote:
> >> >>
> >> >> Not seen this happen myself, what strut
> >> >>
> >> >> Not seen this happen myself, what struts jar's do you have as it might
> >> be
> >> >> something like the convention plugin...
> >> >>
> >> >> If your using maven then it might be useful for others to include what
> >> >> specific maven dependencies your including so potentially someone else
> >> can
> >> >> try using the exact same jars.
> >> >>
> >> >> John
> >> >>
> >> >>
> >> >>
> >> >> On 24 May 2014 15:28, Matt Williams <ma...@yahoo.com> wrote:
> >> >>
> >> >> > Hello,
> >> >> > I have been using struts 2.1.8 for a while and last night noticed an
> >> >> issue
> >> >> > with mapping actions working with any url.
> >> >> >
> >> >> > For instance in the struts.xml file:
> >> >> > - I have a package with a namespace of "/employee".
> >> >> > - Within the package, I have an action mapping "search"
> >> >> > - The webapp name is "TestWeb".
> >> >> >
> >> >> > So to access this page, I can go to:
> >> >> > http://localhost:8080/TestWeb/employee/search.action and this works.
> >> >> > However, if anything is added to the URL after the namespace such as:
> >> >> > http://localhost:8080/TestWeb/employee/someExtraText/search.actionthe
> >> >> > page still loads.
> >> >> >
> >> >> > Why does this happen?
> >> >> >
> >> >> >
> >> >> > Reading the struts documentation
> >> >> > (
> >> >>
> >> http://struts.apache.org/release/2.1.x/docs/namespace-configuration.html)
> >> >> > would make me assume that it should search the
> >> "/employee/someExtraText"
> >> >> > namespace...not find it, so then it should fall back to the default "
> >> >> > namespace...not find it...then display no action mapping found.
> >> >> >
> >> >> >
> >> >> > Any insight? Thanks!
> >> >> >
> >> >> >
> >> >> > ---------------------------------------------------------------------
> >> >> > To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> >> >> > For additional commands, e-mail: user-help@struts.apache.org
> >> >> >
> >> >> >
> >> >>
> >> >
> >> >
> >> > ---------------------------------------------------------------------
> >> > To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> >> > For additional commands, e-mail: user-help@struts.apache.org
> >> >
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> >> For additional commands, e-mail: user-help@struts.apache.org
> >>
> >>
> >
> >
> >-- 
> >e: davelnewton@gmail.com
> >m: 908-380-8699
> >s: davelnewton_skype
> >t: @dave_newton <https://twitter.com/dave_newton>
> >b: Bucky Bits <http://buckybits.blogspot.com/>
> >g: davelnewton <https://github.com/davelnewton>
> >so: Dave Newton <http://stackoverflow.com/users/438992/dave-newton>
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: Struts2 namespace confusion

Posted by Ralph Grove <ra...@gmail.com>.

On 2017-04-28 04:33 (-0400), Lukasz Lenart <lu...@apache.org> wrote: 
> 2017-04-27 13:56 GMT+02:00 Ralph Grove <ra...@gmail.com>:
> > Matt, did this solve your problem? I'm having the same issue with namespaces. With this example, I can request ".../Home", ".../Home/Alpha", ".../Alpha/Alpha/Alpha", etc.    The action executes in each case, but if the URL contains more than one slash, the relative path is messed up for files included in the JSP.
> >
> > Ralph Grove
> >
> > <!DOCTYPE struts PUBLIC
> >     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
> >     "http://struts.apache.org/dtds/struts-2.0.dtd">
> > <struts>
> >
> >     <constant name="struts.mapper.alwaysSelectFullNamespace" value="true" />
> >     <constant name="struts.enable.SlashesInActionNames" value="false" />
> >
> >     <package name="main" extends="struts-default">
> >         <default-action-ref name="NotFound"/>
> >
> >         <global-results>
> >             <result name="error">/error.jsp</result>
> >         </global-results>
> >
> >         <global-exception-mappings>
> >             <exception-mapping exception="java.lang.Exception" result="error"/>
> >         </global-exception-mappings>
> >
> >         <action name="NotFound">
> >             <result>/error.jsp</result>
> >         </action>
> >
> >         <!-- Sidebar menu item and static link actions -->
> >         <action name="Home" class="com.opensymphony.xwork2.ActionSupport">
> >             <result>/WEB-INF/jsp/index.jsp</result>
> >         </action>
> >         <action name="Alpha" class="com.opensymphony.xwork2.ActionSupport">
> >             <result>/WEB-INF/jsp/alpha.jsp</result>
> >         </action>
> >         <action name="Beta" class="com.opensymphony.xwork2.ActionSupport">
> >             <result>/WEB-INF/jsp/beta.jsp</result>
> >         </action>
> >
> >
> >         <!-- Actions -->
> >         <action name="AnAction" class="action.AnAction">
> >             <result name="success">/WEB-INF/jsp/index.jsp</result>
> >             <result name="input">/WEB-INF/jsp/beta.jsp</result>
> >         </action>
> >
> >     </package>
> > </struts>
> 
> I assume you don't use the Convention plugin also what version do you use?
> 
> 
> Regards
> -- 
> \u0141ukasz
> + 48 606 323 122 http://www.lenart.org.pl/
> 


Actually, your solution did work - I just forgot to define the root namespace. Here's my corrected struts.xml, which does treat extended URL's (e.g., .../Alpha/Alpha) as errors.

I'm using version 2.5.10.1 of the core library.

Ralph

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    
    <constant name="struts.mapper.alwaysSelectFullNamespace" value="true" />
    <constant name="struts.enable.SlashesInActionNames" value="false" />
    
    <package name="default" extends="struts-default">  
        <default-action-ref name="NotFound"/>
        
        <global-results>
            <result name="error">/error.jsp</result>
        </global-results>
 
        <global-exception-mappings>
            <exception-mapping exception="java.lang.Exception" result="error"/>
        </global-exception-mappings>
 
        <action name="NotFound">
            <result type="redirect">/error.jsp</result>
        </action> 
    </package>
        
    <package name="root" extends="struts-default" namespace="/">     
        <!-- Sidebar menu item and static link actions -->
        <action name="Home" class="com.opensymphony.xwork2.ActionSupport">
            <result>/WEB-INF/jsp/index.jsp</result>
        </action>
        <action name="Alpha" class="com.opensymphony.xwork2.ActionSupport">
            <result>/WEB-INF/jsp/alpha.jsp</result>
        </action>
        <action name="Beta" class="com.opensymphony.xwork2.ActionSupport">
            <result>/WEB-INF/jsp/beta.jsp</result>
        </action>

                               
        <!-- Actions -->
        <action name="AnAction" class="action.AnAction">
            <result name="success">/WEB-INF/jsp/index.jsp</result>
            <result name="input">/WEB-INF/jsp/beta.jsp</result>
        </action> 
        
    </package>
</struts>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: Struts2 namespace confusion

Posted by Lukasz Lenart <lu...@apache.org>.
2017-04-27 13:56 GMT+02:00 Ralph Grove <ra...@gmail.com>:
> Matt, did this solve your problem? I'm having the same issue with namespaces. With this example, I can request ".../Home", ".../Home/Alpha", ".../Alpha/Alpha/Alpha", etc.    The action executes in each case, but if the URL contains more than one slash, the relative path is messed up for files included in the JSP.
>
> Ralph Grove
>
> <!DOCTYPE struts PUBLIC
>     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
>     "http://struts.apache.org/dtds/struts-2.0.dtd">
> <struts>
>
>     <constant name="struts.mapper.alwaysSelectFullNamespace" value="true" />
>     <constant name="struts.enable.SlashesInActionNames" value="false" />
>
>     <package name="main" extends="struts-default">
>         <default-action-ref name="NotFound"/>
>
>         <global-results>
>             <result name="error">/error.jsp</result>
>         </global-results>
>
>         <global-exception-mappings>
>             <exception-mapping exception="java.lang.Exception" result="error"/>
>         </global-exception-mappings>
>
>         <action name="NotFound">
>             <result>/error.jsp</result>
>         </action>
>
>         <!-- Sidebar menu item and static link actions -->
>         <action name="Home" class="com.opensymphony.xwork2.ActionSupport">
>             <result>/WEB-INF/jsp/index.jsp</result>
>         </action>
>         <action name="Alpha" class="com.opensymphony.xwork2.ActionSupport">
>             <result>/WEB-INF/jsp/alpha.jsp</result>
>         </action>
>         <action name="Beta" class="com.opensymphony.xwork2.ActionSupport">
>             <result>/WEB-INF/jsp/beta.jsp</result>
>         </action>
>
>
>         <!-- Actions -->
>         <action name="AnAction" class="action.AnAction">
>             <result name="success">/WEB-INF/jsp/index.jsp</result>
>             <result name="input">/WEB-INF/jsp/beta.jsp</result>
>         </action>
>
>     </package>
> </struts>

I assume you don't use the Convention plugin also what version do you use?


Regards
-- 
Ɓukasz
+ 48 606 323 122 http://www.lenart.org.pl/

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org