不知到struts.xml中的package表示什么含义,里面的属性应该怎样配置。我的struts.xml:
<struts>
<package name="TestStruts2" extends="default" namespace="/" > 《namespace表示什么?
<action name="sum" class="action.SumAction">
<result name="zhengshu">zhengshu.jsp</result>
<result name="hushu">hushu.jsp</result>
</action>
</package>
</struts>jsp页面: <s:form action="sum.action">
<s:textfield name="n1" label="第一个数"></s:textfield>
<s:textfield name="n2" label="第二个数"></s:textfield>
<s:submit value="求和"></s:submit>
</s:form>
提交不进去,报错
<struts>
<package name="TestStruts2" extends="default" namespace="/" > 《namespace表示什么?
<action name="sum" class="action.SumAction">
<result name="zhengshu">zhengshu.jsp</result>
<result name="hushu">hushu.jsp</result>
</action>
</package>
</struts>jsp页面: <s:form action="sum.action">
<s:textfield name="n1" label="第一个数"></s:textfield>
<s:textfield name="n2" label="第二个数"></s:textfield>
<s:submit value="求和"></s:submit>
</s:form>
提交不进去,报错
包名是唯一的,不能有重复。package元素的namespace将包中的action配置为不同的名称空间,这样不同的名称空间中可以使用同名的action。默认名称空间是"",当你在package中不指定namespace时候,就是使用的这个默认名称空间,如果在指定的名称空间中没有找到action,则框架就会在默认的名称空间中找.你的代码中指定的是"/" 根命名空间,则你访问的action地址应该是 <s:form action="/sum.action">"/"和"/test/aa" 和 "/test" 是3个不同的命名空间,框架也不会解析命名空间为一系列“文件夹”,没有目录的这个概念
namespace代表action访问路径 namespace+actionName
对用户管理的模块的配置文件中,放在"user"这个package里,用"/user"这个namespage那么配置文件应该是这样子
<package name="dept" extends="default" namespage="/department">
<!--配置文件-->
</package><package name="user" extends="default" namespage="/user">
<!--配置文件-->
</package>
那么你提交的action的地址就应该是这样子 /应用程序名/department/departList.action
/应用程序名/user/userSave.action
...参看struts2官方doc,很清楚的写着
需要在页面的名称前面加个斜杆。
form 少一个namespace属性吧?好像是。你加上试试。
package意思是包 防止命名重重复。namespace是访问时的路径。