struts2 action重新赋值无效

blackkami 2015-08-18 02:50:53
例如第1个页面 a.jsp中有个<input type=“text” name="username" value="aaa"/>
当我提交包括这个input的表单时,后台action方法把username=bbb,再返回到这个a.jsp时,input的value还是aaa,
这是为什么,set、get方法都有
...全文
239 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
多木多多木 2015-09-01
  • 打赏
  • 举报
回复
引用 17 楼 u012671246 的回复:
[quote=引用 15 楼 u011106669 的回复:] [quote=引用 14 楼 u012671246 的回复:] [quote=引用 11 楼 u011106669 的回复:] 使用struts2框架,在JSP界面上通过值栈获取属性的值,而且会顺序读取。
忘说了,我放开你说的ValueStack的注释也还是10 是我页面获取的方式不对么[/quote] 用struts2标签试试吧, <s:form action="<%=basePath%>schedule_test2.action" method="post"> <s:textfield name="userid" ></s:textfield> <s:submit></s:submit> </s:form> 在界面上需要引入struts2的标签库 <%@ taglib prefix="s" uri="/struts-tags" %> 或者试试看原来的界面代码中,userid不适用el表达式,也是用s标签呢 <s:property value="username"/>,只用这个标签也需要在界面上引入struts2的标签库。[/quote] 我试着在getUserid()内下了断点,用el表达式的时候不会进入,猜想是缓存,但不知道是什么的缓存[/quote] 楼主,你在界面上直接输入这个标签<s:debug></s:debug>,这个标签能够在界面上查看struts的值栈,在界面上的数据都是存放在值栈中的。在界面上输入了这个标签之后,在进入这个页面,就会在界面上显示一个debug的超链接,一点开,就会在界面上显示值栈中传的值,就像后台跟踪数据那样。试试看取到的id是什么。
多木多多木 2015-08-28
  • 打赏
  • 举报
回复
引用 14 楼 u012671246 的回复:
[quote=引用 11 楼 u011106669 的回复:] 使用struts2框架,在JSP界面上通过值栈获取属性的值,而且会顺序读取。
忘说了,我放开你说的ValueStack的注释也还是10 是我页面获取的方式不对么[/quote] 用struts2标签试试吧, <s:form action="<%=basePath%>schedule_test2.action" method="post"> <s:textfield name="userid" ></s:textfield> <s:submit></s:submit> </s:form> 在界面上需要引入struts2的标签库 <%@ taglib prefix="s" uri="/struts-tags" %> 或者试试看原来的界面代码中,userid不适用el表达式,也是用s标签呢 <s:property value="username"/>,只用这个标签也需要在界面上引入struts2的标签库。
blackkami 2015-08-28
  • 打赏
  • 举报
回复
引用 11 楼 u011106669 的回复:
使用struts2框架,在JSP界面上通过值栈获取属性的值,而且会顺序读取。
忘说了,我放开你说的ValueStack的注释也还是10 是我页面获取的方式不对么
blackkami 2015-08-28
  • 打赏
  • 举报
回复
引用 10 楼 u011106669 的回复:
楼主,在后台光赋值不行,需要把username压入到值栈中才行。在后台加这行代码试试 ValueStack valueStack = ActionContext.getContext().getValueStack(); valueStack.push(username); 看你的代码,username可能是隶属于某一对象的属性,如果直接把属性压入到值栈中不行的话,试试看把存放username的对象压入到值栈中。
JSP: <form action="<%=basePath%>schedule_test2.action" method="post"> <input type="text" name="userid" value="${userid }"/> <input type="submit" value="提交"/> </form> Action: private Long userid; public String test1() throws Exception{ userid=10l; return "test"; } public String test2() throws Exception{ userid=99l; //ValueStack vs = ActionContext.getContext().getValueStack(); //vs.push(userid); return "test"; } public Long getUserid() { return userid; } public void setUserid(Long userid) { this.userid = userid; } 第1次进入显示10,提交后显示10,下断点看是走到了test2成功赋值了
blackkami 2015-08-28
  • 打赏
  • 举报
回复
经过测试: 第1次进入页面,由于没有请求参数userid,故返回到页面el表达式取得栈值10 第2次进入,由于有参数userid,故返回到页面el表达式取request的值10 所以在action中request.removeAttribute("userid");后el表达式可以取得栈值99 知识点: el表达式 顺序查找pageScope/requestScope/sessionScope/applicationScope/ValueStack 感谢楼上各位的热心帮助~ 以上是个人测试所理解的,如果错误望指正~~谢谢~~结贴喽~~~
blackkami 2015-08-28
  • 打赏
  • 举报
回复
引用 19 楼 shijing266 的回复:
你后台返回值的时候,是设置在请求域里面?
不是 是在action里设置的
vswen5 2015-08-28
  • 打赏
  • 举报
回复
看上去没有错啊
  • 打赏
  • 举报
回复
你后台返回值的时候,是设置在请求域里面?
blackkami 2015-08-28
  • 打赏
  • 举报
回复
再补充一下,我用s debug看了下 即使不压栈(其实你让我这么做的目的应该是怕userid不在栈顶吧~),在栈里的值也是99,难道el表达式默认不会从栈里取值?
blackkami 2015-08-28
  • 打赏
  • 举报
回复
引用 15 楼 u011106669 的回复:
[quote=引用 14 楼 u012671246 的回复:] [quote=引用 11 楼 u011106669 的回复:] 使用struts2框架,在JSP界面上通过值栈获取属性的值,而且会顺序读取。
忘说了,我放开你说的ValueStack的注释也还是10 是我页面获取的方式不对么[/quote] 用struts2标签试试吧, <s:form action="<%=basePath%>schedule_test2.action" method="post"> <s:textfield name="userid" ></s:textfield> <s:submit></s:submit> </s:form> 在界面上需要引入struts2的标签库 <%@ taglib prefix="s" uri="/struts-tags" %> 或者试试看原来的界面代码中,userid不适用el表达式,也是用s标签呢 <s:property value="username"/>,只用这个标签也需要在界面上引入struts2的标签库。[/quote] 我试着在getUserid()内下了断点,用el表达式的时候不会进入,猜想是缓存,但不知道是什么的缓存
blackkami 2015-08-28
  • 打赏
  • 举报
回复
引用 15 楼 u011106669 的回复:
[quote=引用 14 楼 u012671246 的回复:] [quote=引用 11 楼 u011106669 的回复:] 使用struts2框架,在JSP界面上通过值栈获取属性的值,而且会顺序读取。
忘说了,我放开你说的ValueStack的注释也还是10 是我页面获取的方式不对么[/quote] 用struts2标签试试吧, <s:form action="<%=basePath%>schedule_test2.action" method="post"> <s:textfield name="userid" ></s:textfield> <s:submit></s:submit> </s:form> 在界面上需要引入struts2的标签库 <%@ taglib prefix="s" uri="/struts-tags" %> 或者试试看原来的界面代码中,userid不适用el表达式,也是用s标签呢 <s:property value="username"/>,只用这个标签也需要在界面上引入struts2的标签库。[/quote] 使用s:form是可以,但是el表达式不也是从值栈里取值么?(另外 <%=basePath%>在这里使用会报错)
a_b_a_b_a_b_a_b 2015-08-27
  • 打赏
  • 举报
回复
能把代码贴一下吗
多木多多木 2015-08-27
  • 打赏
  • 举报
回复
楼主,我还想再补充下我在10楼说的内容,也是突然想到的一点。你问题中的这个过程和修改的流程还有些不一样。在修改的流程中,从前台传递到后台一个主键,然后在后台通过主键查询到要修改的记录,再跳转到界面上去显示,需要查询的这个记录对象,之前并不在值栈中,它是作为一个属性,然后被封装,存放到值栈中,在初始化之前,一直是空值,初始化之后struts2到值栈中找到这个对象,为其赋值,然后在跳转到修改界面后,就能直接通过值栈读取这个对象。
多木多多木 2015-08-27
  • 打赏
  • 举报
回复
楼主,在后台光赋值不行,需要把username压入到值栈中才行。在后台加这行代码试试 ValueStack valueStack = ActionContext.getContext().getValueStack(); valueStack.push(username); 看你的代码,username可能是隶属于某一对象的属性,如果直接把属性压入到值栈中不行的话,试试看把存放username的对象压入到值栈中。
多木多多木 2015-08-27
  • 打赏
  • 举报
回复
使用struts2框架,在JSP界面上通过值栈获取属性的值,而且会顺序读取。
Retro_Wang 2015-08-27
  • 打赏
  • 举报
回复
把代码放出来吧
DoKissYou 2015-08-27
  • 打赏
  • 举报
回复
你get set的 是username么
  • 打赏
  • 举报
回复
引用 5 楼 wi496481 的回复:
我快吐了,现在整个脑袋都是代码,昨天还梦见跟老大闹掰了,好可怕
不要回复与技术无关的
迷林 2015-08-26
  • 打赏
  • 举报
回复
引用 1 楼 shijing266 的回复:
你input的value 是写的动态的么? 还是直接写死aaa
我快吐了,现在整个脑袋都是代码,昨天还梦见跟老大闹掰了,好可怕
blackkami 2015-08-26
  • 打赏
  • 举报
回复
引用 2 楼 b937352320 的回复:
bbb传入页面了吗,success之后在js中重新赋值啊
username=bbb是action中赋值的,回传到jsp中时按理说input的value应该是bbb才对
加载更多回复(3)
parameter="" //指定Actgion的配置参数,在Action类的execute()方法中,可以调用ActionMapping对象的getParameter()方法来读取该配置参数。(相当于初始化赋值) >>> prefix=""// 指定填充当前 Action 关联 FormBean 时 ,要添加到请求参数名称的前缀,因此,如果请求参数名为 "username" 并且 prefix 属性被设置为 "search" , 则将对 FormBean 调用一个名为 setSearchUsername() 的方法,只有指定了 name 属性,本属性才有效 roles="" //指定允许调用该Action的安全角色,多个角色之间用,隔开,在处理请求时,RequestProcessor会根据该配置项来决定用户是否有权限调用Action权限。 scope="request" //指定ActionForm Bean的存在范围,可选值为request和session。默认为session >>>> suffix="" // 指定填充当前 Action 的关联 FormBean 时,要添加到请求参数名称的后缀,因此,如果请求参数名为 "username" 并且 suffix 属性被设置为 "search" , 则将对 FormBean 调用一个名为 seUsernameSearch() 的方法,只有指定了 name 属性,本属性才有效 unknown="false" //如果此项为true,表示可以处理用户发出的所有无效Action URL,默认为false; validate="true" //指定是否要先调用ActionForm Bean的validate()方法。默认为true forward="" //如果当前 Action 映射路径匹配,则指定一个要转发到的相对于模块的 URL,使用 RequestDispatcher.forward()执行转发 > 注意:如上属性中,forward/include相斥,即二者在同一Action配置中只能存在一个。
Java Web编程宝典-十年典藏版.pdf 是PDF电子书,不是源码。共分2个包。 《Java Web编程宝典(十年典藏版)》是一本集技能、范例、项目和应用为一体的学习手册,书中介绍了应用Java Web进行程序开发的各种技术、技巧。全书分4篇,共24章,其中,第1篇为技能学习篇,主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e技术入门、Hibernate高级应用、Spring核心之IoC、Spring核心之AOP、程序调试与发布等内容;第2篇为范例演练篇,主要包括基础知识相关、数据库相关、图像与文件相关、图表与报表相关、Ajax等相关的范例;第3篇为项目实战篇,主要包括讯友联系人管理模块、播客视频管理模块、博客管理模块、明日知道论坛管理模块等4个小型项目:第4篇为商业系统篇,主要包括一个大型的商业项目,即天下淘网上购物商城系统。 《Java Web编程宝典(十年典藏版)》附有配套DVD光盘,光盘中提供了书中全部实例和项目的源代码。这些源代码全部经过精心调试,能够在Windows XP、WindowsServer2003及Windows7操作系统下编译和运行。 《Java Web编程宝典(十年典藏版)》适用于Java Web的初学者、编程爱好者,同时也可以作为培训机构、大中专院校老师和学生的学习参考用书。 目录 第1篇 技能学习篇 第1章 驾驭Ja垤Web开发环境 ——开启JavaWeb开发之门 1.1 本章学习任务 1.1.1 本章知识体系 1.1.2 实例开发任务 1.2 初窥JavaWeb应用 1.2.1 理解C/S结构 1.2.2 理解B/S结构 1.2.3 B/S与C/S的区别 1.2.4 了解JavaWeb应用的成功案例 1.3 JavaWeb开发的基石-开发工具包JrDK 1.3.1 下载JDK 1.3.2 JDK的安装 1.3.3 配置和测试JDK 1.4 JavaWeb应用的Web服务器Tomcat 1.4.1 Web应用服务工作原理 1.4.2 web应用服务器汇总 1.4.3 获取Tomcat 1.4.4 熟悉Tomcat的五脏六腑 1.5 JavaWeb开发利器之Eclipse 1.5.1 获取Eciipse 1.5.2 运行Eclipse 1.5.3 打造中文版Eclipse 1.6 做好项日开发的准备工作 1.6.1 集成Eelipse与Tomcat 1.6.2 完善web项目开发所需配置 1.7 实战检验 1.7.1 创建第一个Java Web项目 1.7.2 将图片输出到JSP页面之中 1.8 疑难解惑 1.8.1 Tomcat端口被占用导致不能启动 1.8.2 Eelipse没有创建JSP项 1.9 精彩回顾 第2章 JavaWeb开发必修课 ——JSP语法 2.1 本章学习任务 2.1.1 本章知识体系 2.1.2 实例开发任务 2.2 什么是JSP 2.2.1 JSP简介 2.2.2 理解JSP运行原理 2.3 使用JSP指令标识 2.3.1 页面指令page的使用 2.3.2 文件包含指令include的使用 2.3.3 引用标签库指令taglib的使用 2.4 使用JSP脚本 2.4.1 在JSP中应用代码片段 2.4.2 使用JSP表达式 2.4.3 声明标识的使用 2.5 注释的魅力 2.5.1 基本的HTML注释 2.5.2 JSP隐藏注释 2.5.3 代码片段中的注释 2.6 常用的JSP动作标识 2.6.1 使用包含动作标识 2.6.2 使用请求转发的动作标识 2.6.3 子动作标.iR~使用 2.7 实战检验 2.7.1 输出九九乘法表 2.7.2 JSP中实现随机抽奖 2.8 疑难解惑 2.8.1 在JSP页面中编写中文之后不能保存 2.8.2 访问JSP页面出现乱码 2.8.3 在JSP页面中使用Include指令后,JSP不能编译 2.9 精彩回顾 第3章前人栽树后人乘凉 ——、JSP内置对象 3.1 本章学习任务 3.1.1 本章知识体系 3.1.2 实例开发任务 3.2 简化开发JSP内置对象概述 3.2.1 为什么需要JSP内置对象 3.2.2 内置对象及其使用场合 3.3 out输出对象的应用 3.3.1 向客户端输出数据 3.3.2 管理相应缓冲区 3.4 request请求对象的应用 3.4.1 获取请求参数 3.4.2 解决中文乱码 3.4.3 获取客户端数据 3.5 response回应对象的应用 3.5.1 HTTP头信息的操作 3.5.2 设置MIME类型 3.5 13页面重定向操作 3.6 Session会话对象的应用 3.6.1 session的生命周期 3.6.2 会话的创建与获取. 3.6.3 移除session中的数据 3.6.4 设置session的有效时间 3.7 application应用对象应用 3.7.1 application的生命周期 3.7.2 application中数据的操作 3.7.3 Web应用初始化参数的配置 3.7.4 application对象应用示例 3.8 其他内置对象的应用 3.8.1 应答与请求的page对象 3.8.2 页面上下文的page Context对象 3.8.3 获取web.xml配置信息的config对象 3.8.4 获取异常信息的exception对象 3.9 实战检验 3.9.1 将网页保存为Word文档 3.9.2 学生管理系统中用户登录模块 3.10 疑难解惑 3.10.1 表单提交中文数据乱码 3.10.2 如何在超链接中传递多个参数 3.10.3 重定向后出现404错误 3.11 精彩回顾 第4章 体验面向对象 1IavaBean技术 4.1 本章学习任务 4.1.1 本章知识体系 4.1.2 实例开发任务 4.2 JavaBean简介 4.2.1 JavaBean产生的背景 4.2.2 使用JavaBean的意义 4.2.3 了解JavaBean的规范. 4.2.4 Eelipse对JavaBean方法的支持 4.3 JavaBean与JSp的完美结合 4.3.1 更加对象化的JSP开发 4.3.2 标识的应用 4.3.3 标识的应用 4.3.4 标识的应用 4.3.5 开发体验之JavaBean实现档案录入 4.4 实战检验 4.4.1 利用JavaBean实现电子时钟 4.4.2 通过JSP、JavaBean实现调查问卷 4.5 疑难解惑 4.5.1 不能获取JavaBean的属性信息 4.5.2 不能为JavaBean属性赋值 4.5.3 获取不到表单中的所有信息 4.6 精彩回顾 第5章 Web应用的缔造者 ——Servlet技术 5.1 本章学习任务 5.1.1 本章知识体系 5.1.2 实例开发任务 5.2 与时俱进——了解Servlet技术 5.2.1 初步认识Servlet 5.2.2 Servlet与JSP的区别 5.3 为我所用——Servlet技术开发 5.3.1 Servlet在JavaEE中的结构体系 5.3.2 Servlet核心API 5.3.3 创建第一个Servlet对象 5.3.4 Servlet配置解析 5.3.5 使用Servlet处理业务逻辑 5.3.6 掌握Servelet处理流程 5.3.7 Eclipse快速创建Servlet 5.4 一夫当关——配置并应用Servlet过滤器 5.4.1 过滤器的基本原理 5.4.2 过滤器的核心API 5.4.3 过滤器的创建与配置 5.4.4 JavaWeb中字符乱码分析 5.4.5 实现字符编码过滤器 5.5 实战检验 5.5.1 通过Servlet实现录入用户信息 5.5.2 应用过滤器实现网页计数器 5.6 疑难解惑 5.6.1 访问Servlet出现404错误 5.6.2 修改Servlet无效 5.6.3 创建过滤器并没有实现过滤效果 5.7 精彩回顾 第6章 打造无脚本的JSP页面 ——EL与JSTL标签库 6.1 本章学习任务 6.1.1 本章学习任务 6.1.2 实例开发任务 6.2 EL与ISTL简介 6.2.1 什么是EL 6.2.2 什么是JSTL 6.3 EL表达式的应用 6.3.1 EL的基本语法. 6.3.2 EL的运算符 6.3.3 EL的隐含对象 6.4 JSTL核心标签库的应用 6.4.1 数据访问标签 6.4.2 流程控制标签 6.4.3 循环标签 6.5 JSTL格式标签库的应用 6.5.1 使用格式化数字 6.5.2 使用格式化时间 6.6 实战检验 6.6.1 根据星期显示不同的提示信息 6.6.2 读取数组中的数据 6.7 疑难解惑 6.7.1 JSTL的优点 6.7.2 JSTL和EL的关系 6.8 精彩回顾 第7章 动态网站之灵魂 ——数据库应用开发 7.1 本章学习任务 7.1.1 本章知识体系. 7.1.2 实例开发任务 7.2 My SQL数据库的安装与使用 7.2.1 安装并配置MyS QL 7.2.2 安装MySQLGUITool 7.2.3 连接MySQLAdministrator. 7.2.4 创建数据库 7.2.5 创建数据表 7.2.6 编辑数据表中的数据 7.3 JDBC技术 7.3.1 JDBC技术原理 7.3.2 JDBC连接数据库的过程 7.3.3 JDBC连接MySQL数据库 7.4 JDBC核心API 7.4.1 代表数据库连接的Connection接口 7.4.2 驱动程序管理器DriverManager类 7.4.3 执行SQL语句的Statement接口 7.4.4 预编译执行SQL语句的PreparedStatement接口 7.4.5 结果集ResultSet接1:2 7.5 JDBC操作数据库 7.5.1 向数据库中插入数据 7.5.2 从数据库中查询所需数据 75.3 修改数据库中的数据 7.5.4 删除无用的数据 7.5.5 批处理数据操作 7.5.6 应用存储过程进行数据操作 7.6 实战检验 7.6.1 JDBC连接SQLServer2005数据库 76.2 网站用户注册 7.7 疑难解惑 7.7.1 Prepared Statement与Statement 7.7.2 预编译的理解 7.8 精彩回顾 第8章 浅尝辄止 ——初识Struts2 8.1 本章学习任务 8.1.1 本章知识体系 8.1.2 实例开发任务. 8.2 Struts2概述 8.2.1 理解MVC原理 8.2.2 Struts2框架的产生 8.2.3 Struts2的结构体系 8.3 Struts2入门 8.3.1 Struts2的获取与放置 8.3.2 第一个Struts2程序 8.4 Action对象 8.4.1 认识Action对象 8.4.2 请求参数的注入原理 8.4.3 Action的基本流程 8.4.4 什么是动态Action 8.4.5 动态Action的应用 8.5 Struts2的配置文件 8.5.1 Struts2的配置文件类型 8.5.2 Struts2的包配置 8.5.3 名称空间配置 8.5.4 Action相关配置 8.5.5 通配符实现简化配置 8.5.6 返回结果的配置 8.6 Struts2的开发模式 8.6.1 实现与ServletAPI的交互 86.2 域模型DomainModel 86.3 驱动模型ModelDriven 8.7 实战检验 8.7.1 Struts2处理表单数据 8.7.2 使用M印类型的request、session、application 8.8 疑难解惑 8.8.1 Struts Prepare And Execute Filter过滤器 8.8.2 struts.xml文件配置出错 8.9 精彩回顾 第9章 庖丁解牛 ——揭密Struts2高级技术 9.1 本章学习任务 9.1.1 本章知识体系 9.1.2 实例开发任务 9.2 OGNL表达式语言 9.2.1 认识OGNL 9.2.2 Struts2框架中的OGNL 9.2.3 操作普通的属性与方法 9.2.4 访问静态方法与属性 9.2.5 访问数组 9.2.6 访问List、Set、M印集合 9.2.7 投影与选择 9.3 Struts2的标签库 9.3.1 数据标签的应用 9.3.2 控制标签的应用 9.3.3 表单标签的应用 …… 第10章 邂逅数据库持久化利器 第11章 探秘数据库持久化利器 第12章 简化企业开发瑰宝之一 第13章 简化企业开发瑰宝之二 第14章 程序员的伴侣 第2篇 范例演练篇 第15章 学以致用 第16章 幕后英雄的用武之地 第17章 Web开发的制胜法宝 第18章 数据分析大师 第19章 体验完美视觉盛宴 第3篇 项目实战篇 第20章 通讯录开发模板 第21章 打造自己的视频网站 第22章 自我展示的空间 第23章 技术交流的平台 第4篇 商业系统篇 第24章 基于SSH2的天下淘商城

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧