【问题标题】:Struts2 regex configurationStruts2 正则表达式配置
【发布时间】:2015-09-24 13:41:12
【问题描述】:

我正在创建一个 Struts2 网络应用程序。

我想要一个像www.xyz.com/portal/orgCode/signin 这样的网址, 这个 orgCode 是动态的,所以我使用正则表达式。

我像这样配置struts.xml:

<constant name="struts.devMode" value="false" />
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.action.extension" value=",html,action" />
<constant name="struts.action.excludePattern" value=".*unfiltered.*,.*\\.nofilter" />
<constant name="struts.multipart.maxSize" value="2097152000"/>
<constant name="struts.enable.SlashesInActionNames" value="true"/> 
<constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/>
<constant name="struts.patternMatcher" value="regex" />

<package name="portal" namespace="/portal/{orgCode}" extends="default">
    <interceptors>
        <interceptor name="portalUrlInterceptor"
                    class="com.wtmit.service.portal.interceptor.PortalCommonInterceptor">
        </interceptor>
        <interceptor-stack name="commonPortalUrlInterceptor">
            <interceptor-ref name="portalUrlInterceptor" />
            <interceptor-ref name="defaultStack" />
        </interceptor-stack>
    </interceptors>

    <action name="signin" method="signin"
           class="com.wtmit.service.portal.action.PortalSignInAction">          
        <interceptor-ref name="commonPortalUrlInterceptor"></interceptor-ref>
        <result name="portalSignIn" type="tiles">portalSignIn</result>
        <result name="successLogin" type="redirect">home</result>

    </action>
</package>

这工作正常,但像 www.xyz.com/mainLogin 这样的 URL 不适用于以下配置:

<package name="main" namespace="/" extends="default">
    <action name="*Login" method="{0}" class="com.service.user.action.LoginAction">
        <result name="login" type="tiles">login</result>
        <result name="successLogin" type="redirect">home</result>
    </action>
</package>

错误是

HTTP 状态 404 - 没有为命名空间 / 和操作名称 mainLogin 映射操作。

【问题讨论】:

  • 我认为你的问题已经有了答案...再次查看xml配置...
  • 显示您的default 包裹。
  • &lt;package name="default" extends="struts-default,json-default"&gt; &lt;result-types&gt;&lt;result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" /&gt; &lt;result-type name="json" class="org.apache.struts2.json.JSONResult" /&gt; &lt;/result-types&gt; &lt;global-results&gt; &lt;result name="sessionExpire" type="redirect"&gt;./&lt;/result&gt; &lt;result name="securityerror" type="tiles"&gt;error500&lt;/result&gt; &lt;/global-results&gt; &lt;global-exception-mappings&gt; &lt;exception-mapping exception="java.lang.Exception" result="securityerror" /&gt; &lt;/global-exception-mappings&gt; &lt;/package&gt;

标签: java regex struts2 friendly-url pretty-urls


【解决方案1】:

您将WildcardsAdvanced Wildcards 混合在一起;而不是这个:

<action name="*Login" method="{0}" class="com.service.user.action.LoginAction">

试试这个:

<action name="/{method}/Login" method="{1}" class="com.service.user.action.LoginAction">

相关阅读:

【讨论】:

  • 谢谢但在我的情况下&lt;package name="portal" namespace="/portal/{orgCode}" extends="default"&gt;..&lt;package name="main" namespace="/" extends="default"&gt; &lt;action name="*Login" method="{0}" class="com.service.user.action.LoginAction"&gt; &lt;/action&gt; &lt;/package&gt; 一起不起作用.. 当我评论&lt;constant name="struts.patternMatcher" value="regex" /&gt; 然后&lt;package name="main" namespace="/" extends="default"&gt; &lt;action name="*Login" method="{0}" class="com.service.user.action.LoginAction"&gt; .. 工作正常,在这种情况下正则表达式映射不起作用
  • 这是&lt;action name="/{method}/Login" method="{1}" class="com.service.user.action.LoginAction"&gt;link example.com/mainLogin 合作吗?
  • 它正在使用 example.com/main/Login 。否则你可以试试&lt;action name="/{method}Login" method="{1}" class="com.service.user.action.LoginAction"&gt;
  • 我无法更改&lt;action name="*Login"因为这种类型用于所有应用程序。我正在为(www.xyz.com/portal/abc/signin)更改&lt;package name="portal" namespace="/portal" extends="default"&gt; &lt;action name="/{orgCode}/signin" method="{1}" class="com,但它不起作用.. 错误是-“HTTP 状态 404 - 没有为命名空间 /portal/abc 和操作名称登录映射操作。” www.xyz.com/portal/orgCode/signin
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-03
  • 2012-06-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多