为什么在使用了interceptor之后action中就无法获得form表单中的数据了?求解~~!

问题描述

1.actionpackage com.michael.logindemo.action;import java.text.SimpleDateFormat;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import com.michael.logindemo.service.LoginService;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport {/** * */private static final long serialVersionUID = -3956302064077854639L;private String username;private String password;private String newPassword;private String birthday;private LoginService loginService;public String login() {SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");simpleDateFormat.format(birthday);loginService = new LoginService();boolean isPasswordCorrect = loginService.verifyPassword(username, password);if(isPasswordCorrect) {HttpServletRequest request = ServletActionContext.getRequest();request.getSession().setAttribute("username", username);return "loginSuccess";}return "loginError";}public String modifyPassword() {loginService = new LoginService();if(loginService.modifyPassword(username, password, newPassword)) {return "modifyPasswordSuccess";}return "modifyPasswordError";}public String getNewPassword() {return newPassword;}public void setNewPassword(String newPassword) {this.newPassword = newPassword;}public LoginService getLoginService() {return loginService;}public void setLoginService(LoginService loginService) {this.loginService = loginService;}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;}public String getBirthday() {return birthday;}public void setBirthday(String birthday) {this.birthday = birthday;}} 2.struts.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts><package name="default" extends="struts-default" namespace="/" ><interceptors><interceptor name="helloInterceptor" class="com.michael.logindemo.interceptor.HelloInterceptor"></interceptor></interceptors><action name="login_*" class="com.michael.logindemo.action.LoginAction" method="{1}" converter=""><interceptor-ref name="helloInterceptor"></interceptor-ref><result name="loginSuccess">login/loginSuccess.jsp</result><result name="loginError">login/loginError.jsp</result><result name="modifyPasswordSuccess">login/modifyPasswordSuccess.jsp</result><result name="modifyPasswordError">login/modifyPasswordError.jsp</result></action></package></struts>   3.interceptorpackage com.michael.logindemo.interceptor;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.Interceptor;public class HelloInterceptor implements Interceptor {/** * */private static final long serialVersionUID = -6597833693985491134L;public void destroy() {}public void init() {}public String intercept(ActionInvocation ai) throws Exception {System.out.println("hello interceptor");return ai.invoke();}} 4.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><link rel="stylesheet" type="text/css" href="styles.css"> </head> <body> <form name="loginform" method="post" action="login_login.action"> <label>用户名<input type="text" name="username"></label><br> <label>密 码<input type="text" name="password"></label><br> <label>生 日<input type="text" name="birthday"></label><br> <label><input type="submit" name="Submit" value="提交"></label> </form> </body></html> 再没有使用interceptor的时候action中可以获得jsp中form表单的值,但是在使用了一个简单的不能够再简单的interceptor之后,action中就无法获得jsp中form表单内填写的值了,在用myeclipse debug的时候,username,password,birthday都是null值,百思不得其- -.......

解决方案

<!-- 在自定义interceptor并将其ref时, 系统会覆盖掉默认的interceptor-stack(defaultStack), 为了保证系统默认的defaultStack不受印象, 我们需要显式的将其引入 --> <!-- 注意两个interceptor-ref的顺序, 顺序不同, 执行效果也不同: 先配置的先执行/后配置的先退出(先进后出) --> <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="myInterceptor"></interceptor-ref>

时间: 2024-08-01 06:26:12

为什么在使用了interceptor之后action中就无法获得form表单中的数据了?求解~~!的相关文章

php-点击按钮后,怎么将form表单中的数据提交到弹窗中显示?

问题描述 点击按钮后,怎么将form表单中的数据提交到弹窗中显示? 点击按钮后,怎么将form表单中的数据提交到弹窗中显示?本人学习的是php语言 解决方案 http://blog.csdn.net/wangzi11322/article/details/45287967 解决方案二: 指定表单的target就行了,可以在指定窗口打开或者新窗口打开,不设置默认为当前窗口打开 <form target="窗口名称或者_blank" 解决方案三: 先用serializeArray序列

跳转路径-急求解决,jsp页面中循环生成的form表单,action路径错误

问题描述 急求解决,jsp页面中循环生成的form表单,action路径错误 在jsp页面中用循环生成的form表单,为什么action不是想要的呢,代码贴在下面了 reply=(Map)request.getAttribute("REPLY"); while(rsComment.next()) { // 评论编号 String CId = rsComment.getString("CId"); // 评论人 String name=rsComment.getStr

jQuery中设置form表单中action值的实现方法_jquery

html代码: <form id="myFormId" name="myForm" action="" method="post"> <input type="hidden" id="inParam" name="inParam" /> <input type="hidden" id="tstype"

struts,form表单中数据无法传递到actionForm中,而且request.getParameter也取不到表单中数据

问题描述 1.struts-config中的配置<form-beanname="provideForm"type="form.ProvideForm"/><actionpath="/assistProvide"name="provideForm"type="action.AssistProviderAction"parameter="method"scope="

有关angularjs中的ng-if 标签在表单中使用

问题描述 有关angularjs中的ng-if 标签在表单中使用 有关angularjs中的ng-if 标签在表单中使用,使用ng-if 销毁了节点,为什么提交表单时ng-if 销毁了的节点依然有值提交 提问相关代码和运行效果参考:http://www.gbtags.com/gb/rtreplayerpreview/1577.htm 解决方案 在使用angularjs过程,ng-repeat中track by的作用AngularJS ng-if ng-repeat下使用ng-model 解决方案

jsp如何根据下拉列表框汇中的值更新表单中的数据

问题描述 jsp如何根据下拉列表框汇中的值更新表单中的数据 下拉列表框和显示数据的表单是在一个jsp中,想要实现党下拉列表框中的值改变 的时候,表单中显示的数据也改变.表单中的数据从数据库中查询得到,该数据 是根据下拉列表中的值从数据库中查询得到 请问如何实现 解决方案 http://download.csdn.net/detail/marroow/3147676http://www.cnblogs.com/lihuiyy/archive/2012/05/23/2514665.html 解决方案

在jsp页面中如果form表单中一些不能为空的框为空了,就不能提交表单

问题描述 在jsp页面中如果form表单中一些不能为空的框为空了,就不能提交表单 在jsp页面中如果form表单中一些不能为空的框为空了,就不能提交表单 比如注册的时候如果用户名或是密码为空,则不能提交表单 解决方案 这当然是 放 js里验证了... 解决方案二: 可以看看validate,比如,validate="{required:true}"就是指非空 解决方案三: 通过控制写js方法form的onsubmit来做验证,或者使用jquery的表单控件 解决方案四: 在javasc

extjs-关于Extjs中使用loadRecord加载选择行至form表单中

问题描述 关于Extjs中使用loadRecord加载选择行至form表单中 handler:function(btn){ var win = new Ext.create(""Ext.window.Window"" { title: ""用户详细信息"" modal:true width: 600 height: 400 items: { xtype: ""form"" margin:

javascript-meta中的refresh返回上一页,我想让它自动跳转到上一页,表单中的数据还保留

问题描述 meta中的refresh返回上一页,我想让它自动跳转到上一页,表单中的数据还保留 我在head中添加了这样一句话,为什么还是不行? 整个head如下所示: Bootstrap Admin <!-- Demo page code --> <meta http-equiv="refresh" content="2; url=javascript:window.history.go(-1);"> 解决方案 自动跳转上/下一页的脚本---