如何更改我的代码以实现URL重写正确使用瓷砖和struts2的(How to change my c

2019-10-17 17:44发布

我使用的follwoing代码重写我的网址。 每次我点击它的工作原理,但个人资料链接上添加了额外资料/视图地址的末端。

http://www.example.com/myProject/Profile/view.action

我第一次在视图中单击它,它变成

 http://www.example.com/myProject/Profile/Profile/view.action

之后,如果我再次点击视图这将是(每次我点击就将此一/个人资料的地址)

  http://localhost:8080/myProject/Profile/Profile/Profile/view.action

链接

  <a href="<s:url action="Profile/view"/>" >Profile</a>

在struts.xml

   <package name="default" extends="struts-default">
    <result-types>
        <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/>
    </result-types>

      <action name="index">
        <result type="tiles">content</result>
    </action>

 </package>

  <package name="Profile" extends="default" namespace="/Profile">
  <action name = "*" method="{1}" class="com.myproject.Profile">
    <result name="View" type="tiles">Profile</result>
            <result name="Edit" type="tiles">Edit</result>
</action>
    </package>

问题是,每次我点击查看它不会删除该地址,并添加配置文件/视图,以它的结束。 它只是从www.example.com/myproject/profile/view更改地址www.example.com/myproject/profile/profile/view

Answer 1:

很难说没有包声明,但它看起来像你的动作获得一个额外的命名空间,因为你在其指定<s:url>标签作为行动的一部分,而不是使用namespace属性。

如果当前操作是配置文件命名空间的一部分,它不会被添加。 如果不是,它会的。 使用namespace属性自动处理它,所以你不必去想它。


编辑以反映完全无关的问题。

您正在扩展struts-default包,里面有没有知识tiles结果类型。 你需要延长你的默认,这包括tiles结果类型,或tiles-default (或任何它的名字,我不记得)。



文章来源: How to change my code to implement url-rewriting correctly using tiles and struts2