struts入门(二)

Struts入门(二)

昨天写了一个小案例,里面的RegisterAction有一个转发的动作,但是我们把转发的路径写死了,这样不好,我们其实只要在struts的配置文件struts-config.xmlRegisterAction节点下添加<forward name="message" path="/message.jsp"></forward>也就是写了个映射关系,以后我们只需要修改配置文件就能实现修改。

         我们以后写的时候都可以不用写死了,所有的都可以在stucts的配置文件里面配置,就拿跳转为例,我们使用stucts提供的html标签库,

<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>

 

导入标签库之后就能用HTMLlink标签了。

<html:link action="/RegisterUI">注册</html:link>

 

这里的RegisterUI是需要在在stucts里面配置

<action path="/RegisterUI" forward="/WEB-INF/jsp/register.jsp"></action>

 

这样子写是不是很方便。

Htmllink标签三大好处:

不用写web应用的名称。传统的需要这么写

<a href="${pageContext.request.contextPath}/RegisterUI.do">注册</a>

 

第二个好处,不用写.do了,stucts已经处理好了。

<html:link action="/RegisterUI">注册</html:link>

自动对请求的参数和url编码

 

关于stucts的表单校验

                  Stucts默认是自动帮助我们写好表单校验的,自动调用里面的validate方法

public ActionErrors validate(ActionMapping mapping,
           HttpServletRequest request) {
       // TODO Auto-generated method stub
       return super.validate(mapping, request);
        }

 

如果返回值为空,代表校验成功,不为空则失败。如果想自己写只需override这个方法,如果不需要自动表单校验,只要在配置文件中把validate置为false(默认true

<action path="/Register" type="larson.web.action.RegisterAction" name="UserFormBean" validate="true">

 

 

现在我们来写表单校验

我们往里面添加数据,struts也能帮助我们做好了一些工作,stucts给我们提供了MessageResources,因为struts在写的时候为了适应国际化,要求我们写一个resource资源文件,所以我们需要在larson.resource包下写一个资源文件,我这写了个prompt.username,对应的值是“用户名不能为空”,通过以下这种方法就能获取到消息,存在了request域。

public ActionErrors validate(ActionMapping mapping,
           HttpServletRequest request) {
      
       ActionErrors errors = new ActionErrors();
       if(this.username==null || this.username.trim().equals("")){
                      MessageResources mr = MessageResources.getMessageResources("larson.resource.MessageResource");
           errors.add("username", new ActionMessage("errors.required",mr.getMessage("prompt.username")));       }
        return errors;
    }

 接下来就需要在注册的表单页面取到这个错误消息,很简单,一行代码,前提是导入html标签库:

<html:errors property="username"/>

 

你可能感兴趣的:(Struts入门,struts表单校验)