我正在使用以下代码重写我的网址。每次我点击它可以使用的配置文件链接,但是在地址的末尾添加了EXTRA配置文件/视图。
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
答案 0 :(得分:1)
很难说没有包声明,但看起来你在操作中获得了额外的命名空间,因为你在<s:url>
标记中指定它作为操作的一部分而不是使用{{ 1}}属性。
如果当前操作是Profile命名空间的一部分,则不会添加它。如果不是,那就会。使用namespace
属性会自动处理它,因此您无需考虑它。
编辑以反映完全无关的问题。
您正在扩展namespace
包,该包不知道struts-default
结果类型。您需要扩展您的默认值, 包含tiles
结果类型,或tiles
(或其他任何名称,我不记得)。