- 浏览: 85548 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
享受生活:
这样又出新问题Class ognl.OgnlRuntime c ...
Form表单提交的String ,需要Int, 产生异常 -
tonyinfy2011:
楼主,拜求您通过Internet 学习的心得体会,收获方法 ...
我关注的网站 -
haohao-xuexi02:
建议resin->httpd.exe不用重启。你可以试试 ...
MyEclipse中web开发修改类文件和配置文件不重启服务器的方法 -
sunshine1988:
请问,有这个的电子书吗?
我刚刚接触zf,求交流,求指教啊~ ...
zend framework 技术
今天上午做一博客,在UserAction中有两个方法 :login() 和 logout(), 还有一个登陆时的validation(),登陆可以运行,但登出时,不运行logout()方法,直接抛出异常:
查了半天资料才发现,当访问一个action时,会先执行其的validation()方法,若检验失败,会返回ACTION的默认返回值INPUT, 所以当登出时,他这样是不会执行logout()的。
解决的方法:
(1)、在不需要进行验证的方法加上annotation,即在方法前加上@SkipValidation
(2)为Action中的指定方法指定一个验证规则,命名为Actionname-alias-validation.xml
下面贴上代码:
UserAction
struts.xml
这样抛出的异常为:
解决:
No result defined for action com.lfq.action.UserAction and result input。
查了半天资料才发现,当访问一个action时,会先执行其的validation()方法,若检验失败,会返回ACTION的默认返回值INPUT, 所以当登出时,他这样是不会执行logout()的。
解决的方法:
(1)、在不需要进行验证的方法加上annotation,即在方法前加上@SkipValidation
(2)为Action中的指定方法指定一个验证规则,命名为Actionname-alias-validation.xml
下面贴上代码:
UserAction
package com.lfq.action; import javax.servlet.http.Cookie; import javax.servlet.http.HttpSession; import com.lfq.dao.UserDAO; import com.lfq.dao.impl.UserDAOImpl; import com.lfq.entity.User; public class UserAction extends BaseAction { /** * */ private static final long serialVersionUID = 1L; private User user; private String msg; //消息 private String userName; private String password; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } private boolean rememberMe; public boolean isRememberMe() { return rememberMe; } public void setRememberMe(boolean rememberMe) { this.rememberMe = rememberMe; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public String login() { String userName = getUserName(); String password = getPassword(); if("".equals(userName) || "".equals(password)) { this.msg = "用户名或者密码不允许为空!"; return INPUT; } UserDAO userDao = new UserDAOImpl(); int userId = userDao.valid(userName, password); if(userId > 0) { if(rememberMe){ String t =userId +","+ userName + "," + password; Cookie cookie = new Cookie("COOKIE_KEY_REMEMBER_LOGIN", t); cookie.setMaxAge(86400); super.getResponse().addCookie(cookie); } super.getSession().setAttribute("SESSION_KEY_USERNAME", userName); super.getSession().setAttribute("SESSION_KEY_USERID", userId); return SUCCESS; } else { this.addFieldError("error", "用户名或密码错误"); return INPUT; } } public String logout() { System.out.println("------------------------"); HttpSession session = getSession(); session.removeAttribute("SESSION_KEY_USERID"); session.removeAttribute("SESSION_KEY_USERNAME"); return SUCCESS; } @Override public void validate() { // TODO Auto-generated method stub if(getUserName() == null || getUserName().trim().equals("")) { addFieldError("userName", getText("user.required")); return; } if(getPassword() == null || getPassword().trim().equals("")) { addFieldError("password", getText("pass.required")); return; } } }
struts.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "http://struts.apache.org/dtds/struts-2.1.7.dtd"> <struts> <include file="struts-default.xml" /> <package name="admin" extends="struts-default" namespace="/admin"> <action name="login" class="com.lfq.action.UserAction" method="login"> <result name="input">/admin/login.jsp</result> <result name="success">/admin/index.jsp</result> </action> <action name="logout" class="com.lfq.action.UserAction" method="logout"> <result name="*">/index.jsp</result> </action> </package> </struts>
这样抛出的异常为:
2011-5-26 13:57:14 com.opensymphony.xwork2.util.logging.commons.CommonsLogger error 严重: Could not find action or result No result defined for action com.lfq.action.UserAction and result input at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:364) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:266) at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252) at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52) at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488) at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:619)
解决:
@SkipValidation public String logout() { System.out.println("------------------------"); HttpSession session = getSession(); session.removeAttribute("SESSION_KEY_USERID"); session.removeAttribute("SESSION_KEY_USERNAME"); return SUCCESS; }
发表评论
-
java.lang.ClassNotFoundException: com.opensymphony.xwork2.util.TextUtils
2011-06-03 13:45 5124java.lang.ClassNotFoundExcept ... -
Form表单提交的String ,需要Int, 产生异常
2011-05-30 16:16 3564今天接这做我的博客,在博客分类提交时,String与Int之间 ... -
No result defined for action com.lfq.action.UserAction and result input
2011-05-25 17:04 0Struts has detected an unhand ... -
struts2表单验证错误信息显示样式
2011-05-25 15:11 1631当我们在使用struts2自带的验证框架来验证表单字段时,需要 ... -
namespace老师报错
2011-05-25 11:37 703<?xml version="1.0&qu ... -
完整的struts.xml示范
2011-02-16 15:30 727文件示范。 <?xml version="1 ... -
struts.xml配置文件(持续更新中)
2011-02-16 15:19 8891、为防止struts.xml文件过于臃肿。 我们可以提高st ... -
MyEclipse中web开发修改类文件和配置文件不重启服务器的方法
2011-02-15 15:26 1812转自:http://blog.csdn.net/lil ...
相关推荐
赠送jar包:jakarta.validation-api-2.0.2.jar; 赠送原API文档:jakarta.validation-api-2.0.2-javadoc.jar; 赠送源代码:jakarta.validation-api-2.0.2-sources.jar; 赠送Maven依赖信息文件:jakarta.validation...
赠送jar包:validation-api-2.0.1.Final.jar; 赠送原API文档:validation-api-2.0.1.Final-javadoc.jar; 赠送源代码:validation-api-2.0.1.Final-sources.jar; 赠送Maven依赖信息文件:validation-api-2.0.1....
赠送jar包:jakarta.validation-api-2.0.1.jar; 赠送原API文档:jakarta.validation-api-2.0.1-javadoc.jar; 赠送源代码:jakarta.validation-api-2.0.1-sources.jar; 赠送Maven依赖信息文件:jakarta.validation...
赠送jar包:validation-api-1.1.0.Final.jar; 赠送原API文档:validation-api-1.1.0.Final-javadoc.jar; 赠送源代码:validation-api-1.1.0.Final-sources.jar; 包含翻译后的API文档:validation-api-1.1.0....
Bean Validation 规范对 Java Bean 的验证流程如下:在实际使用中调用 Validator.validate(JavaBeanInstance) 方法后,Bean Validation 会查找在 JavaBeanInstance上所有的约束声明,对每一个约束调用对应的约束验证...
赠送jar包:jakarta.validation-api-2.0.1.jar; 赠送原API文档:jakarta.validation-api-2.0.1-javadoc.jar; 赠送源代码:jakarta.validation-api-2.0.1-sources.jar; 赠送Maven依赖信息文件:jakarta.validation...
因此,我想展示另一种对返回值进行验证的方法。 灵感来自这个。跑步mvn jetty:run卷曲curl -i http://localhost:8080/api/hello 这是资源方法,使用自定义注释@ResponseValid注释。 @GET@ResponseValidpublic ...
赠送jar包:validation-api-1.1.0.Final.jar; 赠送原API文档:validation-api-1.1.0.Final-javadoc.jar; 赠送源代码:validation-api-1.1.0.Final-sources.jar; 包含翻译后的API文档:validation-api-1.1.0....
主要介绍了Spring Validation实现原理分析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
赠送jar包:validation-api-2.0.1.Final.jar; 赠送原API文档:validation-api-2.0.1.Final-javadoc.jar; 赠送源代码:validation-api-2.0.1.Final-sources.jar; 赠送Maven依赖信息文件:validation-api-2.0.1....
Juery 验证官网原版.
赠送jar包:activiti-process-validation-5.21.0.jar; 赠送原API文档:activiti-process-validation-5.21.0-javadoc.jar; 赠送源代码:activiti-process-validation-5.21.0-sources.jar; 赠送Maven依赖信息文件:...
赠送jar包:jakarta.validation-api-2.0.2.jar; 赠送原API文档:jakarta.validation-api-2.0.2-javadoc.jar; 赠送源代码:jakarta.validation-api-2.0.2-sources.jar; 赠送Maven依赖信息文件:jakarta.validation...
springmvc校验器validation的所有配套jar包,有3个jar包
使用spring validator 对bean进行类似js的校验 下载包 validation-api.jar hibernate-validator.jar
validation验证zip,喜欢的可以下载。
使用FormValidation进行表单验证,使用到了jQuery和Bootstrap框架等相关技术
Bean Validation 规范文档
Struts Validation框架浅尝,Struts Validation框架浅尝Struts Validation框架浅尝
框架验证validation 框架验证validation