struts2中的namespace属性的配置问题大多是感觉疑惑,在这里加以探讨。
基础的配置不多说直奔议题。
namespace是struts.xml配置文件中package标签中的属性,不仅决定了URL的访问action的问题,还决定你的result的访问jsp页面的路径查找的问题。
下面边写代码边解释.
<package name="mainIndex" extends="struts-default" namespace="/">
<action name="index" class="com.wjs.action.MainIndexAction">
<result type="freemarker">WEB-INF/ftl/index.ftl</result>
</action>
</package>
上面的代码中,要注意的是你的namespace="/",也就是说是在根目录下搜索,action为index.do的路径,result中的路径不是全路径,全路径是以“/”开头的,这时候访问index.do会自动的在result中加"/",也就是"/WEB-INF/flt/index.ftl"。
如果你的pacakge类似如下:
<package name="mainIndex" extends="struts-default" namespace="/main">
<action name="index" class="com.wjs.action.MainIndexAction">
<result type="freemarker">WEB-INF/ftl/index.ftl</result>
</action>
</package>
要注意的是namespace="/ftl",resutl不是全路径,访问index.do,你的utl“项目名/ftl/index.do”而result会是这个“/main/WEB-INF/ftl/index.ftl”,当然是找不到找定的路径了。
解决方法就是result的查找jsp页面写成全路径就可以了,如:”/WEB-INF/ftl/index.ftl“,也就是以”/“开头,struts2,在查找路径的时候,就不会把namesapce添加到result的路径前面了。
基础的配置不多说直奔议题。
namespace是struts.xml配置文件中package标签中的属性,不仅决定了URL的访问action的问题,还决定你的result的访问jsp页面的路径查找的问题。
下面边写代码边解释.
<package name="mainIndex" extends="struts-default" namespace="/">
<action name="index" class="com.wjs.action.MainIndexAction">
<result type="freemarker">WEB-INF/ftl/index.ftl</result>
</action>
</package>
上面的代码中,要注意的是你的namespace="/",也就是说是在根目录下搜索,action为index.do的路径,result中的路径不是全路径,全路径是以“/”开头的,这时候访问index.do会自动的在result中加"/",也就是"/WEB-INF/flt/index.ftl"。
如果你的pacakge类似如下:
<package name="mainIndex" extends="struts-default" namespace="/main">
<action name="index" class="com.wjs.action.MainIndexAction">
<result type="freemarker">WEB-INF/ftl/index.ftl</result>
</action>
</package>
要注意的是namespace="/ftl",resutl不是全路径,访问index.do,你的utl“项目名/ftl/index.do”而result会是这个“/main/WEB-INF/ftl/index.ftl”,当然是找不到找定的路径了。
解决方法就是result的查找jsp页面写成全路径就可以了,如:”/WEB-INF/ftl/index.ftl“,也就是以”/“开头,struts2,在查找路径的时候,就不会把namesapce添加到result的路径前面了。