这里是我们Struts应用的核心配置文件struts-config.xml,它把各种动作,动作表单,请求以及验证关联在一起形成可用的Web应用的黏合剂,这部分内容相信大家有Struts的底子,会很容易看懂:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
<!-- form-beans -->
<form-beans>
<form-bean name="reservationForm"
type="org.leno.struts.action.ReservationForm" />
</form-beans>
<!-- action-mappings -->
<action-mappings>
<action path="/reservation"
type="org.apache.struts.actions.ForwardAction" name="reservationForm"
scope="request" parameter="/hotelReservation.jsp" />
<action path="/validateReservation"
type="org.leno.struts.action.ValidateReservationAction"
name="reservationForm" validate="true"
input="/jsp/validation/reservationErrors.jsp">
<forward name="valid" path="/jsp/validation/blank.jsp" />
</action>
<action path="/saveReservation"
type="org.leno.struts.action.SaveReservationAction"
name="reservationForm" validate="true"
input="/hotelReservation.jsp">
<forward name="success"
path="/jsp/validation/reservationSuccessful.jsp" />
<forward name="fail" path="/hotelReservation.jsp" />
</action>
</action-mappings>
<!-- message-resources -->
<message-resources parameter="org/leno/struts/ApplicationResources" />
<!-- plug-in -->
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
</plug-in>
</struts-config>
在这个应用中只有一个动作表单:ReservationForm类,它是一个扩展了ValidatorActionForm类的简单Javabean风格的对象,它为每个表单元素提供了公共的获取方法和设置方法。细心的同志已经发现了,ReservationForm并不是扩展ValidatorForm类,而是扩展ValidatorActionForm类。那么,这两种扩展有什么区别呢?简单点说,扩展ValidatorActionForm意味着validation.xml中的验证规则会基于请求的路径应用到请求上;扩展ValidatorForm意味着validation.xml中的验证规则会基于请求使用的表单bean应用到请求上。下面是ReservationForm的代码:
package org.leno.struts.action;
import java.text.*;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.*;
import org.apache.struts.validator.ValidatorActionForm;
public class ReservationForm extends ValidatorActionForm {
private String arrivalDate;
private String departDate;
private String smokingPref