通常我们在Struts中是使用ActionForm来传送jsp页面的form中提交的数据的,在前面的例子中我们也用到了一个
ActionForm它们都是从org.apache.struts.action.ActionForm中继承来的,那么Struts就行帮我们把提交的数
据自动入到这个Form 中,我们在Action中就可以用form.getXXX()和form.setXXX()来处理数据了,好!下面我
们来做一下这个例子
新建一个文件struts-config-formtest.xml ,下面为文件的内容:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
<form-beans>
<form-bean name="testForm" type="org.form.struts.form.NormalForm" ></form-bean>
<form-bean name="dynaTestForm" type="org.apache.struts.action.DynaActionForm">
<form-property name="userName" type="java.lang.String"></form-property>
<form-property name="passWorld" type="java.lang.String"></form-property>
<form-property name="sex" type="byte" initial="0"></form-property>
<form-property name="email" type="java.lang.String"></form-property>
<form-property name="phoneNum" type="java.lang.String"></form-property>
<form-property name="age" type="int" initial="12"></form-property>
</form-bean>
</form-beans>
<action-mappings>
<action path="/formTest" name="testForm" type="org.form.struts.action.NormalFormAction">
<forward name="success" path="/normalsuccess.jsp"></forward>
</action>
<action path="/dynaformTest" name ="dynaTestForm" type="org.form.struts.action.dynaFormAction">
<forward name="success" path="/dynasuccess.jsp"></forward>
</action>
<action path="/gotoaction" type="org.form.struts.action.GotoAction">
<forward name="success" path="/index.jsp"></forward>
</action>
</action-mappings>
</struts-config>
现在我们只要看到这一句就足够了,动态Form我们会在下面讲解
<form-bean name="testForm" type="org.form.struts.form.NormalForm" ></form-bean>
相信朋友们都清楚这个用来做什么的吧,不知道就看看我先前的文章。
下面为NormalForm.java的内容
package org.form.struts.form;
import org.apache.struts.action.ActionForm;
public class NormalForm extends ActionForm {
private static final long serialVersionUID = -4017195510815090304L;
private String userName;
private String passWorld;
private byte sex;
private String email;
private String phoneNum;
private int age;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWorld() {
return passWorld;
}
public void setPassWorld(String passWorld) {
this.passWorld = passWorld;
}
public byte getSex() {
return sex;
}
public void setSex(byte sex) {
this.sex = sex;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhoneNum() {
return phoneNum;
}
public void setPhoneNum(String phoneNum) {
this.phoneNum = phoneNum;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
我们可以看到这个只是个从ActionForm派生来的javabean,下面把jsp页面也帖出来
<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>请选择你要测试的form</title>
</head>
<body>
<html:form action="formTest" styleId="testform" >
userName:<html:text property="userName"></html:text><br />
passWorld:<html:password property="passWorld"></html:password><br />
sex<html:radio property="sex" value="0" title="男">男</html:radio>
<html:radio property="sex" value="1" title="女">女</html:radio><br />
email<html:text property="email"></html:text><br />
phoneNum<html:text property="phoneNum"></html:text><br />
age<html:text property="age"></html:text><br />
normalForm submit<html:submit onclick="submit(0);return false;"></html:submit><br />
dynaForm submit<html:submit ></html:submit>
</html:form>
</body>
</html>
这次不会讲它的目录结构,在最后我会放出下载地址
好,我们拉着反struts动态from也讲完再来看运行效果:
动态Form是什么意思呢,好就是让我们不用写上面的javabean面直接在xml配置文件中配置,下面为代码,其实上面也已经把代码帖出来了,下面我再帖一次,请注意高亮部分
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
<form-beans>
<form-bean name="testForm" type="org.form.struts.form.NormalForm" ></form-bean>
<form-bean name="dynaTestForm" type="org.apache.struts.action.DynaActionForm">
<form-property name="userName" type="java.lang.String"></form-property>
<form-property name="passWorld" type="java.lang.String"></form-property>
<form-property name="sex" type="byte" initial="0"></form-property>
<form-property name="email" type="java.lang.String"></form-property>
<form-property name="phoneNum" type="java.lang.String"></form-property>
<form-property name="age" type="int" initial="12"></form-property>
</form-bean>
</form-beans>
<action-mappings>
<action path="/formTest" name="testForm" type="org.form.struts.action.NormalFormAction">
<forward name="success" path="/normalsuccess.jsp"></forward>
</action>
<action path="/dynaformTest" name ="dynaTestForm" type="org.form.struts.action.dynaFormAction">
<forward name="success" path="/dynasuccess.jsp"></forward>
</action>
<action path="/gotoaction" type="org.form.struts.action.GotoAction">
<forward name="success" path="/index.jsp"></forward>
</action>
</action-mappings>
</struts-config>
我们可以看到form中的所有的内容都在xml文件中写出来了,
<form-property name="sex" type="byte" initial="0"></form-property>
<form-property name="email" type="java.lang.String"></form-property>
看看上面的两行有什么不一样,它们都是用<form-property>来定义的都有name (相当于javabean中的一个property)
type 不用说了吧就是它的类型,不同的是在第一行中多了一个initial="0" 为什么呢,请记住在基本数据成员是要初始化的
就像局部变量一样。
其实这个东东没什么难度吧,下面讲一个我们初学者都出现的问题,
我们可以先找找这个关键字Cannot retrieve mapping for action 了解一下
下面我们进入正题吧:
web.xml的内容
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xm</param-value>
</init-param>
<init-param>
<param-name>config/formtest</param-name>
<param-value>/WEB-INF/struts-config-formtest.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
我们可以看到这里有两个模块,问题就在这里了,(如果不清楚struts多个配置文件的使用可以看我另一个文章)
在配置文件中你们可以看到我们多了模块,在直接访问jsp文件时,struts只会在默认的模块中找Action所以我们只能
通过一个Action来做连接(好不爽啊)。
下面帖运行效果出来:
下面这个是找不到Action的效果
<!-- 动态Form用这个 -->
<html:form action="formTest" styleId="testform" >
<!--<html:form action="dynaformTest" styleId="testform" >-->
下载地址
Click to view this file
posted on 2007-11-18 12:12
风の使者 阅读(381)
评论(0) 编辑 收藏 所属分类:
struts