今天在修改一个遗留项目的时候,登录页面上的用户名和fielderror等信息在关闭留言器后重新打开,还存在,排除了缓存的问题后,以为是session的问题,用struts2做了一个fielderror的小demo发现页面每次关闭后都会清空fielderror的值,无需要手动在action中加入clearErrorsAndMessages(),后来查阅了资料后解决了问题,原来是spring整合strtus2的问题:
【资料】
struts2和spring的一些特点:
1) Struts2 会对每一个请求,产生一个Action的实例来处理.
2) Spring的Ioc容器管理的bean默认是单实例的.
当Struts2与Spring整合后,由spring来管理Struts2的Action,会遇到什么问题 ?如何解决 ?
Struts2与Spring整合后, 由spring来管理Struts2的Action, bean默认是单实例有情况下,会有如下问题:
1) Action是单例,其中的FieldError,actionerror中的错误信息 会累加, 即使再次输入了正确的信息,也过不了验证.
2) Struts2的Action是有状态的,他有自己的成员属性, 所以在多线程下,会有问题.
如何解决?
方案一: 就是不用单例, spring中bean的作用域设为prototype,每个请求对应一个实例.
方案二: spring中bean的作用域设为session ,每个session对应一个实例,解决了多线程问题。再写一个拦截器, 清空
FieldError与actionerror
源自网络
public class ClearFieldErrorInterceptor extends AbstractInterceptor {
@Override
public String intercept(ActionInvocation invocation) throws Exception {
ActionSupport actionSupport = (ActionSupport)invocation.getAction();
actionSupport.clearErrorsAndMessages();
String resultCode = invocation.invoke();
return resultCode;
}
源自网络
public class ClearFieldErrorInterceptor extends AbstractInterceptor{
@Override
public String intercept(ActionInvocation invocation)throws Exception {
ActionSupport actionSupport = (ActionSupport)invocation.getAction();
actionSupport.clearErrorsAndMessages();
String resultCode = invocation.invoke();
return resultCode;
}
}
转自: http://hi.baidu.com/%BF%AA%CB%B3/blog/item/c09aca061884acc37a89475a.html
分享到:
相关推荐
在标题"struts2 fielderror去掉样式"中,问题的核心是如何去除或者自定义Struts2在显示`FieldError`时默认的样式。Struts2在处理表单验证错误时,通常会将错误信息包裹在一个特定样式的HTML元素中,如`<span>`或`...
在Struts2框架中,`<s:fielderror>` 是一个非常重要的标签,它用于显示表单字段级别的错误信息。这对于提升用户体验、确保数据输入的准确性具有重要意义。然而,在实际应用过程中,许多开发者可能会遇到一些关于如何...
Struts 2是一个流行的Java Web框架,用于构建和维护可扩展且易于管理的企业级应用程序。在Struts 2中,fielderror是用来显示表单验证错误的关键元素。默认情况下,Struts 2为这些错误提供了特定的样式,以便用户能够...
然而,整合过程中可能会遇到各种问题,其中之一就是"struts2 spring整合fieldError问题",这个问题主要涉及到校验框架的使用和Spring的bean管理。 首先,让我们深入理解问题的原因。在Web应用中,用户输入的数据...
4. **MVC模式**:在Struts2Spring项目中,模型由业务实体和领域服务组成,视图通常由JSP页面实现,控制器由Struts2的Action类扮演,它们协同工作,实现了请求处理、业务逻辑执行和用户界面渲染。 5. **配置文件**:...
"educationSelectItemInfos" executeResult="false" /> ...在实际项目中,还需要结合Hibernate进行持久层操作,以及Spring进行依赖注入和事务管理,共同构建出完整的SSH(Struts2 + Hibernate + Spring)企业级应用。
5. **校验结果处理**:当验证失败时,Struts2会将错误信息添加到ActionContext中,然后可以通过OGNL表达式在JSP页面中展示。同时,Action的execute方法不会执行,直到所有验证都通过。 6. **拦截器(Interceptor)*...
2. **Action的Spring管理**:在整合过程中,需要将Struts的Action类声明为Spring的bean。这样,Spring可以在应用程序启动时初始化Action,并在需要时提供实例。通过在Spring配置文件中定义bean,我们可以指定Action...
Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展、模块化且易于管理的企业级应用程序。在Struts2中,表单验证是确保数据输入有效性和一致性的关键环节,它有助于提升用户体验并减少服务器端处理错误。这...
在struts.xml配置文件中启用Struts2的验证插件,如`<constant name="struts.action.extension" value="action"/>`,以及`<constant name="struts.objectFactory" value="spring"></constant>`以使用Spring插件管理...
2. **修改模板文件**:进一步自定义错误信息的显示格式,则需要修改Struts2的模板文件`fielderror.ftl`。 - **步骤**: 1. **解压模板文件**:从Struts2的核心库中解压`fielderror.ftl`文件,并将其放入项目的`WEB...
错误信息的显示可以通过Struts2的标签库来实现。`<s:fielderror>`标签用于输出所有或特定字段的错误信息。例如,`<s:fielderror>`将显示所有字段的错误,而`<s:fielderror cssStyle="color: red"><s:param>age...
反之,如果校验失败,会转向`input`视图资源,通常是在Struts2配置文件中指定的,用于显示错误信息给用户。 #### 三、基于验证框架的输入校验 除了手动校验,Struts2还提供了一个强大的验证框架,支持更复杂的校验...
当Struts2与Spring集成时,可以在Spring的配置文件中定义AOP切面来处理异常,这可以进一步增强异常管理的灵活性。 通过以上这些方式,Struts2的异常处理机制为开发者提供了丰富的选项,能够确保程序在遇到异常时能...
Struts2提供了ActionError和FieldError机制,可以将错误信息添加到ActionContext中,然后在JSP页面上显示。 8. **JSP页面**:登录页面(login.jsp)通常包含一个表单,用于输入用户名和密码。而成功登录后显示的...
与Struts1不同的是,Struts2中的错误信息管理更加集中化,可以更容易地在多个页面之间共享这些信息。 - **`<s:actionmessage>`**:用于显示Action级别的消息信息,通常用于提示用户操作结果等非错误的信息。 #### ...
在使用Struts2验证框架时,可能会遇到一些常见问题,比如验证规则未生效、错误信息无法正确显示等。这些问题通常与以下几个方面有关: 1. **注解配置**:确保在Action类的字段上正确使用了`@Validated`或`@...
Struts2提供了`<s:fielderror>`标签来方便地展示这些错误。 9. **.struts2-convention-plugin**:如果使用了Convention插件,验证规则可以直接写在Action类的注解上,减少了XML配置的工作量。 10. ** strut2-dojo-...
开发者可以使用Struts2提供的标签库,如`s:fielderror`,来展示这些错误信息。 7. **自定义验证** 对于默认验证规则不能满足的需求,Struts2允许开发者编写自定义的验证函数。这些函数可以作为Action类的方法,...
当验证失败时,Struts2会自动填充Action的错误信息,并将其传递到视图层显示。我们可以在JSP页面上通过`<s:fielderror>`标签显示这些错误信息。 此外,Struts2的Validator还支持自定义验证器,如果内置的验证规则...