DispatchAction 和DynaValidateActionForm 结合使用时的问题

使用DispatchAction使得程序员能够大大减少action class的数量,但是在和Validation框架配合使用时,可能会遇到这样的问题:
程序员的本意是只有在action中的某个方法中才使用validation框架校验,但是只要把struts-config.xml中 <action />标签中的validate设为true,那么进入该action的所有方法之前都会进行校验,很痛苦。现在有两个办法:
1,在stuts-config.xml中对一个class 配多个<action/>标签, 比如:
<action path="/saveUser" validate=true ..... type="UserAction" />
<action path="/initUser" validate=false..... type="UserAction" />
只在需要的action里将validate配成true
当然这只是权宜之计。
2:在validation.xml 中将form的name设置成需要的进行校验的action的path

<formset>
<form name="/user.do?method=save">
<field>.... </filed>
</form>
</formset>

这样只有在save()方法调用时才会校验。

update:除了这个,还有另外一个解决方法:
令struts-config.xml中的validate=false,然后在自己的action中需要校验的地方追加以下代码:

ActionMessages errors = form.validate(mapping, request);//在需要的地方调用validate()方法,其中validate()方法的校验规则已经定义在validation.xml中了
if(!errors.isEmpty()){
saveErrors(reqeust, errors);
return mapping.getInputForward();
}
阅读更多

如何使用jsp与servlet结合使用时?

05-08

在使用jsp与servlet结合使用时,编写的servlet的java程序,一定要通过编译生成.class文件才能使用,是吗?rn我用的是jdk1.3与jswdk,但是编写的java程序都不能用。rnimport java.io.*;rnimport java.text.*;rnimport java.util.*;rnimport javax.servlet.*;rnimport javax.sevlet.http;rnpublic class survey extends HttpServlet rnpublic void doPost(HttpServletRequest req, HttpServletResponse res)rn     throws ServletException, IOExceptionrn   rn    // 首先设置响应的 "content type" 头部rn    res.setContentType("text/html");rn    //得到响应的 PrintWriter以返回文本给客户端.rn    PrintWriter toClient = res.getWriter();rn    try rn      //打开一个文件写入Survey的结果.rn      String surveyName = req.getParameterValues("survey")[0];rn      FileWriter resultsFile = new FileWriter(resultsDirrn        + System.getProperty("file.separator")rn        + surveyName + ".txt", true);rn      PrintWriter toFile = new PrintWriter(resultsFile);rn      // 从客户端得到表单数据 & 存贮在这个文件中rn      toFile.println("");rn      Enumeration values = req.getParameterNames();rn      while(values.hasMoreElements()) rn        String name = (String)values.nextElement();rn        String value = req.getParameterValues(name)[0];rn        if(name.compareTo("submit") != 0) rn          toFile.println(name + ": " + value);rn        rn      rn      toFile.println("");rn      //关闭文件。rn      resultsFile.close();rn      // 用一个thank you返回客户端rn      toClient.println("");rn      toClient.println(" Thank you!");rn      toClient.println("Thank you for participating");rn      toClient.println("");rn    rncatch(IOException e) rn      e.printStackTrace();rn      toClient.println(rn        "A problem occured while recording your answers. "rn        + "Please try again.");rn    rn    // 关闭writer; 响应完成。rn    toClient.close();rn  提示非法字符: String name = (String)values.nextElement();rn  String name = (String)values.nextElement();rn为什么? rnrn 转移贴子到 Visual C++ Visual Basic Delphi C/C++ C++ Builder ASM 数据库开发 PowerBuilder ActiveX/COM 数据算法 软件工程 图形/游戏/多媒体 安全技术 网络/通讯 技术书籍 文件格式 C# XML 数据仓库 主页制作 图形处理 ASP PHP Perl Java Javascript JSP 软件使用 资源使用 软件注册 我看软件 寻找软件 行业软件 软件评测 Windows 95/98 Windows NT/2000 DOS Linux/Unix 硬件指南 程序人生 软件市场 程序员考试 人才热线 建议和意见 灌水乐园 走向海外 程序员杂志 | 贴子加分 | 删除贴子 rn

没有更多推荐了,返回首页