- 浏览: 88075 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
享受生活:
这样又出新问题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 5161java.lang.ClassNotFoundExcept ... -
Form表单提交的String ,需要Int, 产生异常
2011-05-30 16:16 3598今天接这做我的博客,在博客分类提交时,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 1658当我们在使用struts2自带的验证框架来验证表单字段时,需要 ... -
namespace老师报错
2011-05-25 11:37 725<?xml version="1.0&qu ... -
完整的struts.xml示范
2011-02-16 15:30 749文件示范。 <?xml version="1 ... -
struts.xml配置文件(持续更新中)
2011-02-16 15:19 9171、为防止struts.xml文件过于臃肿。 我们可以提高st ... -
MyEclipse中web开发修改类文件和配置文件不重启服务器的方法
2011-02-15 15:26 1856转自:http://blog.csdn.net/lil ...
相关推荐
Spring Validation方法实现原理分析 Spring Validation是Spring框架中的一种校验机制,用于验证JavaBean的属性是否符合JSR-303规范。该机制可以在应用程序中自动验证JavaBean的属性,从而确保数据的正确性和完整性...
对于jQuery Validation,这个文件会指导开发者如何引入和使用验证规则,以及如何解决可能出现的问题,是快速上手的关键。 `test`目录包含的是单元测试文件,这些测试确保了插件在每次更新后仍能正常工作。开发者...
赠送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-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包: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....
通过`Validation.buildDefaultValidatorFactory()`可以获取一个Validator实例,然后使用`validate()`方法对对象进行验证。 4. **集成Spring MVC**:在Spring MVC中,可以通过配置`LocalValidatorFactoryBean`作为...
Spring Validator则集成了Hibernate Validator,使得我们可以利用Spring的依赖注入和AOP特性轻松地在Spring应用中使用Bean Validation。在Spring配置中启用Validator后,我们可以在Service层或者Controller层进行...
本篇文章将深入探讨Bean Validation技术,以及如何利用它来对Javabean进行校验。 一、Bean Validation简介 Bean Validation是Java EE的一部分,也是JSR 303和JSR 349规范的实现,后来在Java 8中升级为JSR 380。这个...
赠送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...
Bean Validation 规范对 Java Bean 的验证流程如下:在实际使用中调用 Validator.validate(JavaBeanInstance) 方法后,Bean Validation 会查找在 JavaBeanInstance上所有的约束声明,对每一个约束调用对应的约束验证...
首先,`FormValidation`库提供了一种灵活的方法来验证表单字段,包括但不限于必填字段检查、电子邮件格式验证、手机号码验证等。它的API允许开发者自定义验证规则,创建复杂的验证逻辑。例如,你可以设置一个规则,...
在描述中提到的"结合hibernate-validator对实体做约束验证配置",意味着我们可以利用Hibernate Validator在实体类上添加注解,如@NotNull、@Size、@Min等,来定义数据的合法性规则。 举个例子,假设我们有一个用户...
FormValidation是一款功能强大的前端表单验证框架,专为开发者提供高效、灵活的验证解决方案。它以其高度可定制性,对HTML data属性的完美支持以及内置的自定义验证器功能而备受推崇。本资源包含了FormValidation的...
**FormValidation.js 知识点详解** `FormValidation.js` 是一个强大且灵活的JavaScript库,专门用于前端表单验证。它提供了丰富的校验规则、样式定制以及对动态添加元素的验证支持,使得开发者能够轻松地创建高效、...
这些方法可以对用户输入的数据进行检查,如非空验证、长度限制、格式校验等。如果验证失败,框架会将错误信息添加到ActionContext中,然后这些错误信息可以在JSP页面上展示给用户。 在Struts2 XML配置文件中,`...
EasyExcel的优势在于其简洁的API设计和对内存的高效利用。它无需预先加载整个Excel文件到内存,而是采用流式读写,降低了对系统资源的占用,特别适合处理大数据量的Excel文件。使用EasyExcel进行Excel导入导出,主要...
Bean Validation规范要求Java版本为至少JDK 1.5以上,以利用其增强的语言特性如注解等。 #### 1.4 文档组织 文档按照章节结构组织,涵盖了从约束定义到验证过程的全面内容,便于读者系统性学习。 #### 1.5 变更...