今天遇到了一个问题:
在登陆页面:
当第一次输入登陆信息(用户名和密码)后,在action中通过addFieldError这个传出错误信息,页面显示正常;
第二次输入登录信息后,没有进入action,直接跳转到error指向的页面了,再次提交action也没有效果。
注:登陆页面的action中用了addFieldError输出用户登陆的错误信息,前端用<s:fielderror/>输出
在网上查了下:
原因是:项目中配置了action error后,error没有清空造成,
解决办法:
1.继承com.opensymphony.xwork2.Preparable接口,
public void prepare() throws Exception这个方法,并清空Action中的Error和Message信息:
@Override
public void prepare() throws Exception {
clearErrorsAndMessages();
}
2.在配置文件里设置ActionError或FieldError的有效范围为request(该方法没有试验,不知道怎么配置)。
相关推荐
Struts2提供了Token插件来解决这个问题,确保每个表单提交只能被执行一次。下面将详细阐述Struts2中Token机制的工作原理、配置以及使用方法。 1. Token机制概述: Token机制是通过在客户端(浏览器)和服务器之间...
5. **处理验证结果**:在Action类中,Struts会自动调用验证器,如果验证失败,Action的execute方法不会执行,而是返回“input”结果,可以在JSP页面中显示错误信息。 **三、自定义验证器** 当内置的验证规则不能...
如果ActionForm的验证失败,Action的execute方法不会被执行,而是直接跳转回原来的表单页面,此时表单页面会显示验证错误信息。 7. **国际化支持** 为了支持多语言,错误消息通常会存储在资源文件(如messages....
Struts1是一个经典的Java Web开发框架,它在处理表单提交时可能会遇到一个问题:用户意外地多次点击提交按钮,导致服务器接收到重复的请求。为了解决这个问题,Struts1引入了“令牌”机制,也称为Token Session或...
这里,我们启用了Validation拦截器,并排除了一些不需验证的方法,如“input”表示用户重新提交表单时不需要再次验证。 在视图层,Struts2提供了一种方便的方式来展示这些验证错误。你可以使用OGNL(Object-Graph ...
Struts2框架提供了一套完善的验证机制,可以帮助开发者轻松实现各种验证逻辑,包括但不限于空值检测、格式检查以及业务逻辑验证等。本文将详细介绍如何在Struts2中实现简单的输入验证,主要关注空值判断和用户名密码...
- 当用户提交表单时,服务器会在Action中生成一个唯一的token,并将其保存在session中,同时将该token作为隐藏字段回显到表单。 - 用户再次提交表单时,`TokenInterceptor`会检查session中的token是否与请求参数中...
如果验证失败(比如因为用户刷新页面),拦截器会抛出一个`TokenException`,你可以捕获这个异常并处理。 ```java public class MyAction extends ActionSupport { @Override public String execute() throws ...
表单应提交到一个对应的Struts2 action,如`LoginAction`: ```jsp <form action="login" method="post"> 用户名: 密码: 登录" /> ``` 然后,创建`LoginAction`类,继承自Struts2的`ActionSupport`类。在这...
例如,你可以创建一个`ActionError`实例,并通过`addFieldError()`方法将它关联到特定字段,以便在页面上精确地显示错误位置。 ```java ActionError error = new ActionError("errors.invalidInput"); ...
验证框架允许开发者定义一组规则来检查用户提交的数据,如果数据不符合预设的规则,框架会返回错误消息并阻止操作的执行。这有助于防止因无效数据导致的程序异常或数据库污染。 要实现Struts2的验证,你需要以下...
如果验证失败,我们返回"input",框架会再次显示登录表单。 在Struts2的配置文件(通常为`struts.xml`)中,你需要定义这个Action及其关联的结果: ```xml <package name="default" namespace="/" extends="struts...
- **错误处理**:如果转换失败或验证不通过,Struts2会自动添加相应的错误信息到`ActionContext`中,并可以通过`addFieldError()`方法获取这些错误。 ### 验证配置与国际化资源 #### 配置验证规则 Struts2允许...
当Action类重写此方法并检测到错误时,可以通过`addFieldError`或`addActionError`添加错误信息。如果存在Action或Field错误,Struts2会自动返回"input"结果,不会执行`execute()`方法。如果验证通过,Struts2会在...
在struts.xml文件中为动作(action)配置“input”结果,这样当验证失败时,可以将控制权返回到原始表单页面: ```xml <package name="default" namespace="/" extends="struts-default"> <action name=...
在Web应用中,用户可能会意外或恶意地多次点击提交按钮,导致表单数据被重复提交,这会引发一系列问题,比如数据库数据异常、业务逻辑错误等。为了解决这个问题,Struts提供了一种称为“同步令牌”(Synchronizer ...
当验证失败时,Struts2会自动将用户重定向到`input`结果。在这个例子中,用户会被带到`input.jsp`,在这个页面上显示错误消息。你可以在JSP页面上使用`fieldErrors`标签来显示这些错误信息。 ### 6. 总结 通过上述...
如果验证失败,`Action`对象的`fieldErrors`属性会被填充错误信息,这些信息会被Struts2自动显示在页面上。例如: ```java public class MyAction extends ActionSupport { private String username; // ...
如果验证失败,Struts2会将错误信息存储在`ActionContext`中,并在视图层(通常是JSP页面)通过`fieldErrors`标签显示出来。例如: ```jsp ()"> <li><s:property/> ``` 这段代码会遍历所有字段错误...
在Struts2中,当服务端验证失败时,通常会将错误信息保存在ActionContext中,并通过ActionSupport类中的addFieldError方法添加到字段上。此时,为了保留页面的初始状态,我们可以采取以下策略: 1. 使用`...