在北京软通动力面试的时候难倒我的三个题目

1:如何针对dispatchAction中method的不同使用不同的验证方法

      现在已经找到答案:发现这个validation.xml中的内容都读到ValidatorResource这个类的一个实例中了,在验证时从这个类的实例查找相应的formbean,例如我在<form name=”registerForm”>的话,它在ValidatorPlugIn的init()方法(被ActionServlet的init()调用)时会把name=registerForm保存在ValidatorPlugIn的一个ValidatorResource的变量里。如果客户请求一个action,当然会生成一个ActionForm(或是已存在的),如果这个ActionForm的逻辑名是registerForm,并且这个ActionForm的父类的validate()被调用(这个ActionForm没有validate()方法,或者在validate()方法中通过super.validate()),那么ValidatorForm会通过这个ValidatorResource找到要验证的ActionForm的逻辑名,而ValidatorActionForm则先通过path找到一个Action,再通过action mapping的name属性找到要验证的ActionForm。

因此我用<form name="/registerAction?method=AddUser">,则它自然找不到一个action的path是/registerAction?method=AddUser,因此没有任何验证。看来这么是不行的。
那有没有别的办法呢?DispatchAction能根据不同的参数选择不同的方法,那就应该能根据不同的参数选择不同的验证。因此我只要重写validate方法,如果参数是viewUser就不验证(return null),否则调用父类的validate()。不过用这种方法有一个问题,那就是不能使用动态的ActionForm,即DynaValidatorForm,因为它根本没有这个类,不可能写validate()方法。
 public ActionErrors validate(ActionMapping actionMapping, HttpServletRequest httpServletRequest) {
    /**@todo: finish this method, this is just the skeleton.*/
    String parameter=actionMapping.getParameter();
    String paramValue=httpServletRequest.getParameter(parameter);
    System.out.println("from actionmapping "+paramValue);
    parameter=httpServletRequest.getParameter("method");
    System.out.println("from request "+parameter);
    if(paramValue.equals("ViewUser")){
      return null;
    }
   
    ActionErrors errors=super.validate(actionMapping,httpServletRequest);
    return errors;
   }
 2: 文本框里边的文字,随便选中,点下,选中的文字就可以加上连结。
3:form中有个div,div里边有8个checkBox,名字不一样,问是否在在选中两个以后给出提示
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值