gpt4 book ai didi

java - Struts2 通配符映射 - 更具体的一个由通用的一个处理

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:38:51 24 4
gpt4 key购买 nike

我目前正在使用我的 Struts2 配置进行通配符测试,但我被这个配置卡住了。

    <action name="/*/*" class="checkBlogUrl" method="testing">
<param name="blogSiteUrl">{1}</param>
<param name="test">{2}</param>
<result name="success">/WEB-INF/jsp/cmsPages/index.jsp</result>
</action>

<action name="/*/postPreview1" class="blogPostAction" method="test">
<param name="blogSiteUrl">{1}</param>
<result name="success">/WEB-INF/jsp/cmsPages/templatePicker.jsp</result>
</action>

如果我访问 myurl.com/hello/hi,我将被重定向到 index.jsp

但是如果我访问 myurl.com/hello/postPreview1,我也会被重定向到 index.jsp 而不是 templatePicker.jsp

我是不是做错了什么? struts wildcard doc说最后一个会赢

编辑:

只是尝试将它们切换过来,它成功了!我误读了文档吗?

最佳答案

您在操作名称中使用了斜杠,这不正确地与通配符映射器一起使用。正如我在链接中所说的 answer ,在这种情况下最好的模式匹配器是 regex 模式匹配器。

<constant name="struts.patternMatcher" value="regex"/>

参见 Advanced Wildcards .

<action name="/{blogSiteUrl}/{test}" class="checkBlogUrl" method="testing">
<result name="success">/WEB-INF/jsp/cmsPages/index.jsp</result>
</action>

<action name="/{blogSiteUrl}/postPreview1" class="blogPostAction" method="test">
<result name="success">/WEB-INF/jsp/cmsPages/templatePicker.jsp</result>
</action>

关于通配符映射器的文档。让我们看一下示例空白应用程序:

<package name="example" namespace="/example" extends="default">

<action name="HelloWorld" class="example.HelloWorld">
<result>/WEB-INF/jsp/example/HelloWorld.jsp</result>
</action>

<action name="Login_*" method="{1}" class="example.Login">
<result name="input">/WEB-INF/jsp/example/Login.jsp</result>
<result type="redirectAction">Menu</result>
</action>

<action name="*" class="example.ExampleSupport">
<result>/WEB-INF/jsp/example/{1}.jsp</result>
</action>

<!-- Add actions here -->
</package>

因此 URL 将按顺序匹配:

  1. http://localhost:8080/example/HelloWorld
  2. http://localhost:8080/example/Login_input
  3. http://localhost:8080/example/Register

我会说更具体的映射先于不太具体/不常见的映射,它获胜是因为它在操作配置的顺序中首先找到。与有序配置不匹配的所有内容都属于不太具体的最后一个映射。

关于java - Struts2 通配符映射 - 更具体的一个由通用的一个处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36882538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com