1、ActionForm的作用机理
2.ActionForm的用法
a.首先创建ActionForm
package test;
import org.apache.struts.action.*;
import javax.servlet.http.*;
public class TestActionForm extends ActionForm{
//属性值 ,下面username,password假设作为该类的属性
……
//setter和getter方法
……
//验证表单数据,使用ActionErrors和ActionMessage来提交错误信息到页面
public ActionErrors validate(ActionMapping actionMapping,HttpServletRequest httpServletRequest)
{
//ActionErrors封装一组验证错误,同map类似
ActionErrors errors=new ActionErrors();
errors.add("nameError",new ActionMessage("error.username.required",username));
errors.add("passwordError",new ActionMessage("error.username.required",password));
return null;
}
//表单数据复位
public void reset(ActionMapping actionMapping,HttpServletRequest httpServletRequest)
{
}
}
b.配置ActionForm
每创建一个ActionForm类,就需要在Struts的配置文件Struts-config.xml中配置这个类。
<form-beans>
<form-bean name="testActionForm" type="test.TestActionForm"></form-bean>
</form-beans>
c.访问ActionForm
1)使用Struts HTML标记库
2)从Request或session对象中取出ActionForm对象
TestActionForm form=(TestActionForm)request.getAttribute("testActionForm");
3)通过Action类的execute()方法直接访问ActionForm
3.表单数据的验证
a.重写validate()方法
//验证表单数据,使用ActionErrors和ActionMessage来提交错误信息到页面
public ActionErrors validate(ActionMapping actionMapping,HttpServletRequest httpServletRequest)
{
//ActionErrors封装一组验证错误,同map类似
ActionErrors errors=new ActionErrors();
errors.add("nameError",new ActionMessage("error.username.required",username));
errors.add("passwordError",new ActionMessage("error.username.required",password));
return null;
}
b.设置资源文件
#username is wrong用户名有误
error.username.required=<li>username is wrong</li>
#password is wrong
error.password.required=<li>password is wrong</li>
c.修改配置文件
在struts-config.xml配置文件中,把<action>元素的validate属性设置为true,指定input属性的URL值(当表单验证失败的时候返回该URL);并添加<message-resources>元素以指定资源文件的存放路径。
可以通过配置web.xml来配置ActionServlet显示的文件后缀,红色部分:
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.aspx</url-pattern>
</servlet-mapping>
d.输入页面中插入标记
<html:errors property="namewrong"/>
4.编程时需要注意的一些小问题:
<html:form action="loginForm" method="post">
<!--一些html代码-->
</html:form>
struts-config.xml中的配置:
<form-beans>
<form-bean name="loginForm" type="struts.LoginForm"></form-bean>
</form-beans>
<action-mappings>
<action path="/loginForm" name="loginForm" type="struts.LoginAction" scope="request" validate="true" input="/login.jsp" attribute="loginForm">
</action>
</action-mappings>
红色与红色部分名称一样,蓝色与蓝色部分名称一样,可以随意命名,但是名字相互对应!!