Java Struts名称空间和WEB-INF文件夹
我想把Java Struts名称空间和WEB-INF文件夹,java,jsp,tomcat,struts2,Java,Jsp,Tomcat,Struts2,我想把view.jsp文件放在WEB-INF文件夹中。它位于WEB-INF\user\view.jsp <package name="user" extends="struts-default" namespace="user"> <action name="view" class="com.example.user.ViewUserAction"> <result>/WEB-INF/user/view.jsp</r
view.jsp
文件放在WEB-INF文件夹中。它位于WEB-INF\user\view.jsp
<package name="user" extends="struts-default" namespace="user">
<action name="view" class="com.example.user.ViewUserAction">
<result>/WEB-INF/user/view.jsp</result>
</action>
</package>
/WEB-INF/user/view.jsp
但是Struts将这个url更改为application/user/WEB-INF/user/view.jsp
因此,据我所知,如果我的命名空间不是
“/”
,我将永远不会访问WEB-INF中的JSP
?我发现了我的错误所在
正如Alexander M在评论中指出的那样,不会生成这样的url
问题是我尝试过各种糟糕的解决方案,但大多数都有下一个概要
在struts.xml
中,我写道:
<package name="product" namespace="/" extends="struts-default">
<action name="view" class="com.example.action.product.ViewProduct">
<result name="success">/WEB-INF/view/product/view.jsp</result>
</action>
</package>
这是无效的
因此,我将struts.xml名称空间更改为:
<package name="product" namespace="/product" extends="struts-default">
<action name="view" class="com.example.action.product.ViewProduct">
<result name="success">/WEB-INF/view/product/view.jsp</result>
</action>
</package>
有关包和名称空间理解的进一步参考:
什么?您在哪里看到Struts将此url更改为application/user/WEB-INF/user/view.jsp?命名空间不是操作的路径,它就像是操作所在的占位符。@RomanC所以它的工作原理类似于操作将从哪个位置执行?位置是结果标记体中的位置,在代码中是绝对的。是的,使用S2标记构建url是最佳实践。
http://localhost:8080/app/product/product/view.action
<package name="product" namespace="/product" extends="struts-default">
<action name="view" class="com.example.action.product.ViewProduct">
<result name="success">/WEB-INF/view/product/view.jsp</result>
</action>
</package>
<a href="<s:url action='view' namespace="/product"/>"> View product</a>
<s:a action="view" namespace="/product"> View product</s:a>