struts1.2验证框架续

struts 验证
代码级验证:ActionForm, ActionErrors validate(),
1, new ActionErrors
2, 进行验证
3, errors.add("xx",new ActionMessage(xxx))
4, saveErrors(request, errors);
saveMessages(request, errors);
<html:messages message="true|false/*取错误还是消息*/" id property />

框架验证:1,资源文件,里面有错误消息
2,validation.xml / validator-rules.xml
DTD是从validator-rules.xml拷过来的.
3,ActionForm基类
ValidatorForm, validatorActionForm,DynaValidatorForm,DynaValidatorActionForm.
凡是加了action的,那么在validation.xml中的form的name为action的path,否
则是action的name.
4,去掉validate()
5,action配置里保证validate是true
6,struts-config.xml中加<Plug-in>
validation.xml配置:
<form-set>
<form name="action.name|action.path">
<field property="xx/a[1]" depends="">
<arg name="哪一个验证规则,不写对所有的验证规则" key="" resource="true|false" />
<msg name="哪一个验证规则,不写对所有的验证规则" key="" resource="true|false" />
<var>
<var-name>minlength,maxlength,mask,validwhen(*this*==123,"123",password)->test,intRange->min/max,required,email />
<var-value>
</field>
</form>
<form>
</form>
</form-set>
自定义验证规则,修改validator-rules.xml
classname=""
method=""
public static boolean validateXXX(Object bean,Field field,...
类Resources.getActionMessage(...
----------------------------------------------------------------------------
DispatchAction(分发Action)
public class CompulateAction extends DispatchAction {
// 分发类Action是不写execute方法的.
// DispatchAction的对应关系:页面表单里有隐藏表单域name为a
// 在struts-config.xml中的对应的action的配置段中其parameter也为a.
// 页面提交时, 其隐藏表单域a的值就对应方法名.
public ActionForward add(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
throws Exception {
return null;
}
}
---------------
LookupDispatchAction

// LookupDispatchAction
// 需要用到资源文件做桥梁, 来完成页面的提交按钮和方法名之间的对应关系.
// 在struts-config.xml中把对应的action的配置段中其parameter值为提交按钮的名字.
ApplicationResource.properties:
label.add=+
label.sub=-
label.multi=*
label.div=/

页面(必须要用struts标签):
<html:submit property="method">
<bean:message key="label.add" />
</html:submit>


protected Map getKeyMethodMap() {
Map rtn = new HashMap();
rtn.put("label.add", "add");
rtn.put("label.sub", "sub");
rtn.put("label.multi", "multi");
rtn.put("label.div", "div");
return rtn;
}
----------------
// MappingDispatchAction和DispatchAction的代码是完全一致的
// 不同的方法可能对应不同的Form和Forward
// 思路:在struts-config.xml中分为逻辑上独立的一些Action.
// 此时action配置段中的其parameter值就是方法名.
// 可以对不同的方法做不同的验证.
// 对于验证框架, 这是最优先的选择.
-------------------
EventDispatchAction

<action .. parameter="save,back,recalc=recalculate.default=save"/>

public DynaBean getUserById(Integer id) {

LazyDynaBean rtn = new LazyDynaBean();
List<User> userList = dao.findByProperty("userId", id);
if(userList!=null && userList.size()>0) {
rtn.set("userId", userList.get(0).getUserId());
}
}

// 我们欺骗一下struts
DynaBean rtn = service.getUserByid();
request.setAttribute("userForm" rtn);
------------------------------------------------
如何做DispatchAction验证
MyFieldChecks类:
修改ActionServlet和init方法.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值