日期:2014-05-16  浏览次数:20401 次

JavaScript中Docuent.all的用法,Struts中的多表单提交

document.all是页面内所有元素的一个集合。例如:??
????
document.all(0)表示页面内第一个元素,由于在Struts页面中使用<html:form>的时候不能为form命名

此时在javascript 中获取表单元素用document.all就可以获得表单元素的值

下面的代码片段演示了在Struts页面中document.all()的用法以及Struts中的多表单提交
<script type="text/javascript">
??function send(data) {
?? var name = document.all.loginName.value;
?? alert(name);
?? if(data == "删除") {
????window.navigate("/40strutsclass4/login.do?type=delete&name="+name);
?? }
??}
</script>
?? <html:form action="/login.do" method="post">
???? <table border="0">
????????<tr>
??????????<td>LoginName:</td>
??????????<td><html:text property="loginName" value="12"/></td>
????????</tr>
????????<tr>
??????????<td colspan="2" align="center">
?????????? <input type="button"??value="删除"/>
?????????? <html:submit value="find" property="type"/>
??????????</td>
????????</tr>
??????</table>
????</html:form>

对应的struts-config中的配置
<action
??????attribute="loginForm"
??????input="/login.jsp"
??????name="loginForm"
??????parameter="type"
??????path="/login"
??????scope="request"
??????type="com.accp.struts.action.LoginAction" />

注意写parameter属性,这里不写的话就会报错

所对应的Action中的方法,需要注意的是action类要继承DispatchAction类

public ActionForward delete(ActionMapping mapping, ActionForm form,
?? HttpServletRequest request, HttpServletResponse response) {
??LoginForm loginForm=(LoginForm)form;
??System.out.println("delete!!!!!!!!!!!!!!!!!!!!!!!"+request.getParameter("name")+loginForm.getLoginName());
??return null;
}
其中方法名必须与 <html:submit value="find" property="type"/>中的value 相同,或与 window.navigate("/40strutsclas

s4/login.do?type=delete&name="+name);中的type对应的值相同.

多表单提交可以实现一个jsp页面中包含多个提交按钮,并且都提交的同一个Action类,由一个action类来处理不同的业

务逻辑