struts高手都进来看看。

时间:2020-12-29 00:50:01
1.如果validate方法返回errors不为空,则struts会返回在<action.../>中指定的input属性的页面,现在我有几个不同的页面共用一个action与form,但这样的话,validate只能返回一个页面,即<action..../>中input指定的页面,怎样才能指向其他页面?
 2.我在struts页面中写了一个javascript检查的function,但是在用trim(filename)时,总是提示“缺少对象”错误!代码如下:
           function check(form){
           var filename=form.foldername.value;         
        if(trim(filename)==""){
  alert("请输入名称!!");
  form.foldername.focus();
         }
            }

17 个解决方案

#1




  <form-beans>
    <form-bean name="submitForm1" type="struts.SubmitForm" />
  </form-beans>
  <action-mappings>
  ...
  </action-mappings>
...
  <form-beans>
    <form-bean name="submitForm2" type="struts.SubmitForm" />
  </form-beans>
  <action-mappings>
  ...
  </action-mappings>
...
试试看。我不确定。

#2


不能这么用啊

#3


第一个我也不知道,但至少楼上的方法不可行,这样的struts-config.xml配置不符合dtd的格式验证

第二个,是因为js没有trim方法,这个得自己写

#4


没有trim吗,我怎么记得以前用过的。
晕!!!

#5


第一个每个action分别作一个input.没办法。或者你查查SAIF,他提高了对action的拦截能力。
第二个js当然没有trim.

#6


没有trim方法的,你要用这个方法可以把代码写到Form中再调用不就得了。
action可以做几个input吗?没有试过

#7


action可以做几个input

#8


第一,你可以把错误判断全放在Action中进行,通过Action转到不同的页面,只不过这时把页面的<html:errors/>要放在<logic:messagesPresent></logic:messagesPresent>中即可。
第二,javascript中好像没有trim.

#9


从Struts API源程序中可以看出,ActionForm的validate是由ActionServlet调用处理的,并且在调用Action之前调用,所以解决办法有几种:
1、自己扩展ActionServlet,在ActionServlet中处理;
2、在ActionForm的validate验证数据中如果出错,直接保存出错信息,直接进行跳转,例如pageContext.forward(inputpage);
3、不就是验证数据吗,没有谁规定一定要在ActionForm的validate处理,所以不用ActionForm的validate,而是把validate处理放到Action中,那样你爱怎样处理就怎样处理。

#10


form上面写:<html:errors/>

struts-config里面要配置action mapping 的input属性

ActionForm里面:
    public ActionErrors validate(ActionMapping mapping,
                                 HttpServletRequest request) {

        // Perform validator framework validations
        ActionErrors errors = super.validate(mapping, request);

        // Only need crossfield validations here
        if (!password.equals(password2)) {
            errors.add("password2",
                       new ActionMessage("error.password.match"));
        }
        return errors;
    }

#11


up

#12


struts-config里面要配置action mapping 的input属性
这个input怎样配置呢,是同时写多个input吗?

#13


kui(kui) 你说的在validate验证数据中如果出错,直接保存出错信息,直接进行跳转,例如pageContext.forward(inputpage);请问在 ActionForm中的validate 方法中可以写savaError这个方法吗?如果可以能给出一个实例代码吗?继续等待。

#14


请问在 ActionForm中的validate 方法中可以写savaError这个方法吗?
当然不行,savaError是Action.class的方法,不是在ActionForm.class中的

#15


多看API源程序,对程序设计会有帮助的,看人家Craig R. McClanahan是这样写的savaError方法:
protected void saveErrors(HttpServletRequest request,
                  ActionErrors errors) {

        // Remove any error messages attribute if none are required
        if ((errors == null) || errors.isEmpty()) {
            request.removeAttribute(ERROR_KEY);
            return;
        }

        // Save the error messages we need
        request.setAttribute(ERROR_KEY, errors);

    }
你非得用saveErrors吗?直接用setAttribute不行?

#16


第二个问题:
把trim(filename)修改为filename.trim()
就OK了

#17


顶一下吧

#1




  <form-beans>
    <form-bean name="submitForm1" type="struts.SubmitForm" />
  </form-beans>
  <action-mappings>
  ...
  </action-mappings>
...
  <form-beans>
    <form-bean name="submitForm2" type="struts.SubmitForm" />
  </form-beans>
  <action-mappings>
  ...
  </action-mappings>
...
试试看。我不确定。

#2


不能这么用啊

#3


第一个我也不知道,但至少楼上的方法不可行,这样的struts-config.xml配置不符合dtd的格式验证

第二个,是因为js没有trim方法,这个得自己写

#4


没有trim吗,我怎么记得以前用过的。
晕!!!

#5


第一个每个action分别作一个input.没办法。或者你查查SAIF,他提高了对action的拦截能力。
第二个js当然没有trim.

#6


没有trim方法的,你要用这个方法可以把代码写到Form中再调用不就得了。
action可以做几个input吗?没有试过

#7


action可以做几个input

#8


第一,你可以把错误判断全放在Action中进行,通过Action转到不同的页面,只不过这时把页面的<html:errors/>要放在<logic:messagesPresent></logic:messagesPresent>中即可。
第二,javascript中好像没有trim.

#9


从Struts API源程序中可以看出,ActionForm的validate是由ActionServlet调用处理的,并且在调用Action之前调用,所以解决办法有几种:
1、自己扩展ActionServlet,在ActionServlet中处理;
2、在ActionForm的validate验证数据中如果出错,直接保存出错信息,直接进行跳转,例如pageContext.forward(inputpage);
3、不就是验证数据吗,没有谁规定一定要在ActionForm的validate处理,所以不用ActionForm的validate,而是把validate处理放到Action中,那样你爱怎样处理就怎样处理。

#10


form上面写:<html:errors/>

struts-config里面要配置action mapping 的input属性

ActionForm里面:
    public ActionErrors validate(ActionMapping mapping,
                                 HttpServletRequest request) {

        // Perform validator framework validations
        ActionErrors errors = super.validate(mapping, request);

        // Only need crossfield validations here
        if (!password.equals(password2)) {
            errors.add("password2",
                       new ActionMessage("error.password.match"));
        }
        return errors;
    }

#11


up

#12


struts-config里面要配置action mapping 的input属性
这个input怎样配置呢,是同时写多个input吗?

#13


kui(kui) 你说的在validate验证数据中如果出错,直接保存出错信息,直接进行跳转,例如pageContext.forward(inputpage);请问在 ActionForm中的validate 方法中可以写savaError这个方法吗?如果可以能给出一个实例代码吗?继续等待。

#14


请问在 ActionForm中的validate 方法中可以写savaError这个方法吗?
当然不行,savaError是Action.class的方法,不是在ActionForm.class中的

#15


多看API源程序,对程序设计会有帮助的,看人家Craig R. McClanahan是这样写的savaError方法:
protected void saveErrors(HttpServletRequest request,
                  ActionErrors errors) {

        // Remove any error messages attribute if none are required
        if ((errors == null) || errors.isEmpty()) {
            request.removeAttribute(ERROR_KEY);
            return;
        }

        // Save the error messages we need
        request.setAttribute(ERROR_KEY, errors);

    }
你非得用saveErrors吗?直接用setAttribute不行?

#16


第二个问题:
把trim(filename)修改为filename.trim()
就OK了

#17


顶一下吧