这里我碰到了一个问题,如果我们简单的将所有的jsp放在/WEB-INF/xx.jsp下,那没有任何问题,在jsp中我们定义form如下所表示
<s:form action="mystruts/sum" method="post" namespace="mystruts">
<s:textfield name="operator1" label=" 操作数1"/>
<s:textfield name="operator2" label=" 操作数2" />
<s:submit value="代数和" />
</s:form>
配置文件会解析匹配找到相应的action,并跳转到我在配置文件中设定的jsp,form中action属性中的mystruts不能删除,后面的namespace属性可以不要,不影响运行,看过其他的介绍,有的说是先从指定命名空间中,找不到在从default命名空间中找。那这里就不明白了,我不指定命名空间了,为什么还是能运行,具体还需要看源码。可能action="mystruts/sum"就已经指定了他的命名空间为mystruts。
<-----------------------------我是一号分隔符------------------------------------>
但是若是我们建立一个jsp,在/WEB-INF/mystruts/multi.jsp目录下,二级目录为命名空间的名字,jsp中的内容为(一号方案)
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>multiSubmit</title>
</head>
<body>
<s:form action="mulInput" namespace="/mystruts">
<s:text name="msg"/> <!-- 用于服务端输出显示 -->
<s:submit name="save" value="保存" /><!--method表明进入哪个具体方法处理 -->
</s:form>
</body>
</html>
这种方式应该是找到/mystruts命名空间下的mulInput,并进入execute方法处理。非常正确。后台无任何错误。
URL:http://localhost:8080/Struts2/mystruts/mulInput.action
<-----------------------------我是二号分隔符------------------------------------>
这里我修改了form的属性(二号方案)
<s:form action="mystruts/mulInput" namespace="/mystruts">
启动时或刷新页面,后台会报一个错误
警告: No configuration found for the specified action: 'mystruts/mulInput' in namespace: '/mystruts'. Form action defaulting to 'action' attribute's literal value.这个预计是容器启动时,加载了配置文件,并做校验。
也能进入我预先设置的Action中。这里就很奇怪。
URL:http://localhost:8080/Struts2/mystruts/mystruts/mulInput//中间多了一个mystruts.因为是在mystruts包下。
<s:form action="mystruts/sum" method="post" namespace="mystruts">
<s:textfield name="operator1" label=" 操作数1"/>
<s:textfield name="operator2" label=" 操作数2" />
<s:submit value="代数和" />
</s:form>
配置文件会解析匹配找到相应的action,并跳转到我在配置文件中设定的jsp,form中action属性中的mystruts不能删除,后面的namespace属性可以不要,不影响运行,看过其他的介绍,有的说是先从指定命名空间中,找不到在从default命名空间中找。那这里就不明白了,我不指定命名空间了,为什么还是能运行,具体还需要看源码。可能action="mystruts/sum"就已经指定了他的命名空间为mystruts。
<-----------------------------我是一号分隔符------------------------------------>
但是若是我们建立一个jsp,在/WEB-INF/mystruts/multi.jsp目录下,二级目录为命名空间的名字,jsp中的内容为(一号方案)
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>multiSubmit</title>
</head>
<body>
<s:form action="mulInput" namespace="/mystruts">
<s:text name="msg"/> <!-- 用于服务端输出显示 -->
<s:submit name="save" value="保存" /><!--method表明进入哪个具体方法处理 -->
</s:form>
</body>
</html>
这种方式应该是找到/mystruts命名空间下的mulInput,并进入execute方法处理。非常正确。后台无任何错误。
URL:http://localhost:8080/Struts2/mystruts/mulInput.action
<-----------------------------我是二号分隔符------------------------------------>
这里我修改了form的属性(二号方案)
<s:form action="mystruts/mulInput" namespace="/mystruts">
启动时或刷新页面,后台会报一个错误
警告: No configuration found for the specified action: 'mystruts/mulInput' in namespace: '/mystruts'. Form action defaulting to 'action' attribute's literal value.这个预计是容器启动时,加载了配置文件,并做校验。
也能进入我预先设置的Action中。这里就很奇怪。
URL:http://localhost:8080/Struts2/mystruts/mystruts/mulInput//中间多了一个mystruts.因为是在mystruts包下。