(13)用Struts实现数据校验

有2种方法:

1.通过validateX实现

public void validateAdd() {
if(msg.getTitle()==null||"".equals(msg.getTitle())) {
	this.addFieldError("title", "标题不能为空");
}
if(msg.getContent()==null||"".equals(msg.getContent())) {
	this.addFieldError("content", "内容不能为空");
}
}
public String add() {
	return "success";
}
public String addInput() {
	return "success";
}

执行顺序:addInput-validateAdd-add

如果验证不通过,就会在添加错误信息到FieldError,在执行add之前发现FieldError有值,就会返回input,跳转到Input界面,所以struts.xml要这样写

 <action name="*_*" class="action.{1}Action" method="{2}">
        <interceptor-ref name="AuthStack"/>
        <result>/WEB-INF/{1}/{2}.jsp</result>
        <result name="input">/WEB-INF/{1}/addInput.jsp</result>
  </action>

注意:add-validateAdd  add要变成Add!

 

2.用验证文件校验

(1).在action包中创建XX-validation.xml(xx为action类名)

<validators>
    <field name="title">
        <field-validator type="requiredstring">
            <message key="title不能为空"/>
        </field-validator>
    </field>
    <field name="content">
        <field-validator type="requiredstring">
            <message key="content不能为空"/>
        </field-validator>
    </field>
</validators>

 

 

由于有ModelDriven 写title他会自动校验msg.title,写content他会自动校验msg.content

附:struts常用校验器:

 

注意:要想把FieldError在页面显示,就要用struts的标签

<s:form action="Message_add" method="post">
<s:textfield key="message.title" name="title"/>
<s:textfield key="message.content" name="content"/>
<s:submit value="提交"/>
</s:form>

注意(1):不需要国际化就用lable,如果想要实现国际化,就用key=“”

      (2):<s:xx name="">其中的name是与action中msg属性对应的,通过setter(setName)进行赋值

      (3):如果想集中显示错误信息,可以使用<s:fielderror/>

      (4):如果想显示某一条错误信息,可以使用<s:fielderror fieldName="id"/>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值