jsp传jsp页面传值到action为空

从Action中传值到JSP页面的方法-java-电脑编程网从Action中传值到JSP页面的方法作者:programmer_luxh 和相关&&  1、一般是在Action中定义一个成员变量,然后对这个成员变量提供get/set方法,在JSP页面就可以取到这个变量的值了。
  1)在Action中定义成员变量
//定义一个成员变量
//提供get/set方法
public String getMessage() {
public void setMessage(String message) {
this.message =
  2)在JSP页面中取值
${message}
&s:property value="message"/&
  2、但是定义的成员变量多了,感觉整个Action的代码就很长了。这个时候可以使用一些Servlet API进行值的存取操作:HttpServletRequest、HttpSession和ServletContext。Struts2对这个三个对象用Map进行了封装,我们就可以使用Map对象来存取数据了。
  1)在Action中存值
ActionContext actionContext = ActionContext.getContext();
//get HttpServletRequest
Map&String,Object& request = (Map) actionContext.get("request");
request.put("a", "a is in request");
//get HttpSession
//Map&String,Object& session = (Map) actionContext.get("session");
Map&String,Object& session = actionContext.getSession();
session.put("b", "b is in session");
//get ServletContext
//Map&String,Object& application
= (Map) actionContext.get("application");
Map&String,Object& application
= actionContext.getApplication();
application.put("c", "c is in application");
  2)在JSP页面上取值
${requestScope.a}
${sessionScope.b}
${applicationScope.c}
  相关资料:|||||||从Action中传值到JSP页面的方法来源网络,如有侵权请告知,即处理!编程Tags:                &                    当前位置:
→ jsp和action之间参数传递的四种方法
本类常用软件
下载量:358133
下载量:228862
下载量:209511
下载量:209334
下载量:208219
jsp和action之间参数传递的四种方法
22:13:31&&出处:&&&人气:1926次&&&&字号:&&&&
东坡下载 & 分享互联网
Copyright(C)
All Rights Reserved! 网站备案/许可证号:鄂ICP备号-1当前访客身份:游客 [
当前位置:
jsp中表单值的name与action中的属性已经一致了,而且strut.xml也正确配置,但传过去的值就是为null,求解!
&s:form action="login" method="post"&
&s:textfield name="sNumber" label="username" /&
&s:password name="sPassword" label="password"/&
&s:submit value="denglu"/&
&s:reset value="reset"/&
public class LoginAction extends ActionSupport{
private String sN
private String sP
public String getsNumber() {
public void setsNumber(String sNumber) {
this.sNumber = sN
public String getsPassword() {
public void setsPassword(String sPassword) {
this.sPassword = sP
public String execute() throws Exception {
if(getsNumber().equals("1")&&getsPassword().equals("1")){
return SUCCESS;
return ERROR;
} struts.xml:
&!-- Configuration for the default package. --&
&package name="login" extends="struts-default"&
&action name="login" class="example.LoginAction"&
&result name="success"&/newjsp.jsp&/result&
&result name="error"&/example/HelloWorld.jsp&/result&
&/package&
java.lang.NullPointerException
example.LoginAction.execute(LoginAction.java:46)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:601)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:450)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:289)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:252)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:167)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:239)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:239)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:161)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:189)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:563)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:434)
共有5个答案
<span class="a_vote_num" id="a_vote_num_
set方法属性名首字母改成大写试试 好久没用过了,反射设置属性默认set属性名首字母大写的吧
<span class="a_vote_num" id="a_vote_num_
引用来自“寒情漠漠”的评论set方法属性名首字母改成大写试试 好久没用过了,反射设置属性默认set属性名首字母大写的吧不行,我想估计是jar包的引入问题
<span class="a_vote_num" id="a_vote_num_
引用来自“寒情漠漠”的评论set方法属性名首字母改成大写试试 好久没用过了,反射设置属性默认set属性名首字母大写的吧
我又试一下,把变量全改为小写,就可以传值了.
估计是传值过程中不能识别大小写.
<span class="a_vote_num" id="a_vote_num_
现在还 Struts
直接SpringMVC 吧
<span class="a_vote_num" id="a_vote_num_
你参数有问题.没set值.&
getset参数首字母大写.
不然你上面的set和get都被当做普通方法了.当然是null.
有什么技术问题吗?
小喇叭2...的其他问题
类似的话题Struts2中action传参,JSP页面显示中文乱码问题!!!_java吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:280,325贴子:
Struts2中action传参,JSP页面显示中文乱码问题!!!收藏
&&& &action name="saveKc" class="com.cvicse.hs.cyxt.kcgl.action.KcglAction" method="saveKc"&&&&&&& &result type="redirect"&/kcgl/editKcInit.action?kcdm=${kcdm}&message=${message}&/result&在action1中定义String message="保存成功!";保存功能执行后,从这个action1传到另一个action2,然后在页面显示提示信息。有set和get方法。JSP页面用的都是GBK的编码方式。我把配置文件中加入&constant name="struts.i18n.encoding" value="GBK" /& 解决乱码。但是不行!!!把tomcat下的config中的service文件中8080后加入URIencoding="GBK";也还是不行。在action2中message =new String(message.getBytes(),"GBK");还是乱码。郁闷死了..!谁能给我说下怎么解决这个乱码问题啊!!急~~~~~~~~~~~
UTF-8试试?过滤器?
公司规定,所有页面都得用GBK
在action里面 response.setContentType("text/charset=gbk");试试。。
用过滤器解决字符编码问题
在tomcat server.xml文件中的 &Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"
/&后面加上useBodyEncodingForURI="true" URIEncoding="UTF-8"
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或Struts2 JSP中将list,set ,Map传递到Action然后&s:iterator&遍历(三十五) - 慢慢睁开你的眼睛 - ITeye技术网站
博客分类:
---------------List-----------------
1.使用Strut2的的集合对象:在jsp初始化action中的list然后提交到action
2.使用Struts标签,实现多个用户同时注册(注意属性配置文件)
package com.sh.
import java.util.D
public class Register {
package com.sh.
import java.util.ArrayL
import java.util.L
import com.opensymphony.xwork2.ActionS
import com.sh.pojo.R
public class RegisterAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private List&Register&
public List&Register& getRegisters() {
public void setRegisters(List&Register& registers) {
this.registers =
public String execute() throws Exception {
return SUCCESS;
5.RegisterAction-conversion.properties(配置action中list的泛型对象,放在action同一目录下,属性文件的命名为:actionName-version.properties)
Element_registers=com.sh.pojo.Register //Element_是固定的后面接action中的list集合变量名,后面是泛型中的对象类。
6.struts.xml
&?xml version="1.0" encoding="UTF-8" ?&
&!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"&
&!-- 定义国际化资源文件的基本名称 --&
&constant name="struts.i18n.encoding" value="utf-8"/&
&package name="default" extends="struts-default"&
&!-- 使用list集合 --&
&action name="registerAction" class="com.sh.action.RegisterAction"&
&result name="success"&/success.jsp&/result&
&result name="input"&/login.jsp&/result&
&!-- 使用Set集合 --&
&action name="registerSetAction" class="com.sh.action.RegisterSetAction"&
&result name="success"&/success1.jsp&/result&
&result name="input"&/login3.jsp&/result&
&!-- 使用 HashMap --&
&action name="registerHashMapAction" class="com.sh.action.RegisterHashMapAction"&
&result name="success"&/success3.jsp&/result&
&result name="input"&/login3.jsp&/result&
&/package&
7.login.jsp& 使用 struts2标签 和 OGNL 表达式
&s:form action="registerAction" method="post" theme="simple"&
&ul style="list-style: text-align:"&
&li style="float:width: 155px"&用户名&/li&
&li style="float:width: 155px"&密码&/li&
&li style="float:width: 155px"&年龄&/li&
&li style="float:width: 155px"&生日&/li&
&li style="float:width: 155px"&地址&/li&
&div style="clear:"&&/div&
&!-- 手动声明一个 new int[4] 长度为4 的int 类型的数组--&
&s:iterator value="new int[4]" status="st"&
&ul style="list-style:"&
&li style="float: left"&
&s:textfield name="%{'registers['+#st.index+'].name'}" label="用户名"/&
&li style="float: left"&
&s:password name="%{'registers['+#st.index+'].pwd'}" label="密码"/&
&li style="float: left"&
&s:textfield name="%{'registers['+#st.index+'].age'}" label="年龄"/&
&li style="float: left"&
&s:textfield name="%{'registers['+#st.index+'].birthday'}" onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'});" label="生日"/&
&s:textfield name="%{'registers['+#st.index+'].address'}" label="地址"/&
&/s:iterator&
&div&&s:submit value="submit"/&&/div&
8.success.jsp 循环遍历 list 集合
&ul style="list-style: text-align:"&
&li style="float:width: 155px"&用户名&/li&
&li style="float:width: 155px"&密码&/li&
&li style="float:width: 155px"&年龄&/li&
&li style="float:width: 155px"&生日&/li&
&li style="float:width: 155px"&地址&/li&
&div style="clear:"&&/div&
&s:iterator value="registers" status="st"&
&ul style="list-style:"&
&li style="float:width: 155"&
&s:property value="name"/&
&li style="float:width: 155"&
&s:property value="pwd"/&
&li style="float:width: 155"&
&s:property value="age"/&
&li style="float:width: 155"&
&s:property value="birthday"/&
&s:property value="address"/&
&div&&/div&
&/s:iterator&
9.访问
--localhost:8080/Struts2_CollectConversion/login.jsp
填上信息后提交就可以看到成功页面的循环的输出
10.使用 jstl c 标签 和& EL 表达式 实现上面的 批量注册 (注意 数组初始化)
long1.jsp
&form action="${pageContext.request.contextPath}/registerAction.action" method="post"&
&ul style="list-style: text-align:"&
&li style="float:width: 155px"&用户名&/li&
&li style="float:width: 155px"&密码&/li&
&li style="float:width: 155px"&年龄&/li&
&li style="float:width: 155px"&生日&/li&
&li style="float:width: 155px"&地址&/li&
&div style="clear:"&&/div&
&!--注意这里 声明的时候和上面的不一样 new int[4] c标签识别不出来 ,识别的只有一个元素--&
&c:forEach items="new int[]{0,0,0,0}" varStatus="st"&
&ul style="list-style:"&
&li style="float: left"&
&input name="registers[${st.index}].name"/&
&li style="float: left"&
&input name="registers[${st.index}].pwd" /&
&li style="float: left"&
&input name="registers[${st.index}].age"/&
&li style="float: left"&
&input name="registers[${st.index}].birthday" onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'});"/&
&input name="registers[${st.index}].address" /&
&/c:forEach&
&div&&input type="submit"/&&/div&
--localhost:8080/Struts2_CollectConversion/login1.jsp
填上信息后和上面的一样。
---------------Set----------------
12.使用Strutgs2的 Set 类型. 遍历所有 和 取其中一个
action
package com.sh.
import java.util.LinkedHashS
import java.util.S
import com.opensymphony.xwork2.ActionS
import com.sh.pojo.R
public class RegisterSetAction extends ActionSupport {
private Set&Register& registers=new LinkedHashSet&Register&();
public Set&Register& getRegisters() {
public void setRegisters(Set&Register& registers) {
this.registers =
public String execute() throws Exception {
// TODO Auto-generated method stub
return SUCCESS;
13.RegisterSetAction-conversion.properties
KeyProperty_registers=name
//KeyProperty 如果是取 单个 就需要这个
Element_registers=com.sh.pojo.Register
14.login3.jsp& (注意 初始化 set 的时候 采用 makeNew[] )
&s:form action="registerSetAction" method="post" theme="simple"&
&ul style="list-style: text-align:"&
&li style="float:width: 155px"&用户名&/li&
&li style="float:width: 155px"&密码&/li&
&li style="float:width: 155px"&年龄&/li&
&li style="float:width: 155px"&生日&/li&
&li style="float:width: 155px"&地址&/li&
&div style="clear:"&&/div&
&!-- 注意 使用了makeNew[] --&
&s:iterator value="new int[4]" status="st"&
&ul style="list-style:"&
&li style="float: left"&
&s:textfield name="%{'registers.makeNew['+#st.index+'].name'}" label="用户名"/&
&li style="float: left"&
&s:password name="%{'registers.makeNew['+#st.index+'].pwd'}" label="密码"/&
&li style="float: left"&
&s:textfield name="%{'registers.makeNew['+#st.index+'].age'}" label="年龄"/&
&li style="float: left"&
&s:textfield name="%{'registers.makeNew['+#st.index+'].birthday'}" onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'});" label="生日"/&
&s:textfield name="%{'registers.makeNew['+#st.index+'].address'}" label="地址"/&
&/s:iterator&
&div&&s:submit value="submit"/&&/div&
15.success2.jsp 遍历 Set 和获取 单个
&ul style="list-style: text-align:"&
&li style="float:width: 155px"&用户名&/li&
&li style="float:width: 155px"&密码&/li&
&li style="float:width: 155px"&年龄&/li&
&li style="float:width: 155px"&生日&/li&
&li style="float:width: 155px"&地址&/li&
&div style="clear:"&&/div&
&div&===========遍历所有的=========&/div&
&s:iterator value="registers" status="st"&
&ul style="list-style:"&
&li style="float:width: 155"&
&s:property value="name"/&
&li style="float:width: 155"&
&s:property value="pwd"/&
&li style="float:width: 155"&
&s:property value="age"/&
&li style="float:width: 155"&
&s:property value="birthday"/&
&s:property value="address"/&
&div&&/div&
&/s:iterator&
&div&===========单独去其中的一个(知道其中的key wei admin)========&/div&
&ul style="list-style:"&
&li style="float:width: 155"&
&s:property value="registers('admin').name"/&
&li style="float:width: 155"&
&s:property value="registers('admin').pwd"/&
&li style="float:width: 155"&
&s:property value="registers('admin').age"/&
&li style="float:width: 155"&
&s:property value="registers('admin').birthday"/&
&s:property value="registers('admin').address"/&
16.访问
--http://localhost:8080/Struts2_CollectConversion/login3.jsp
填写信息后& 就会到成功页面 看到遍历所有& 和 取单个
---------------Map----------------
17.使用 Strut2的 Map 类型
package com.sh.
import java.util.HashM
import java.util.M
import com.opensymphony.xwork2.ActionS
import com.sh.pojo.R
public class RegisterHashMapAction extends ActionSupport {
private Map&String,Register& maps=new HashMap&String, Register&();
public Map&String, Register& getMaps() {
public void setMaps(Map&String, Register& maps) {
this.maps =
public String execute() throws Exception {
// TODO Auto-generated method stub
return SUCCESS;
18.属性配置文件 RegisterHashMapAction-conversion.properties
Key_maps=java.lang.String
// Key_ 固定
后面为action的Map属性名
Element_maps=com.sh.pojo.Register
19.login5.jsp
&s:form action="registerHashMapAction" method="post" theme="simple"&
&ul style="list-style: text-align:"&
&li style="float:width: 155px"&用户名&/li&
&li style="float:width: 155px"&密码&/li&
&li style="float:width: 155px"&年龄&/li&
&li style="float:width: 155px"&生日&/li&
&li style="float:width: 155px"&地址&/li&
&div style="clear:"&&/div&
&!-- 注意 【key】 中key 的取值类型和 配置文件中一直--&
&s:iterator value="new int[4]" status="st"&
&ul style="list-style:"&
&li style="float: left"&
&s:textfield name="%{'maps['+#st.index+'].name'}" label="用户名"/&
&li style="float: left"&
&s:password name="%{'maps['+#st.index+'].pwd'}" label="密码"/&
&li style="float: left"&
&s:textfield name="%{'maps['+#st.index+'].age'}" label="年龄"/&
&li style="float: left"&
&s:textfield name="%{'maps['+#st.index+'].birthday'}" onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'});" label="生日"/&
&s:textfield name="%{'maps['+#st.index+'].address'}" label="地址"/&
&/s:iterator&
&div&&s:submit value="submit"/&&/div&
20 .success3.jsp 遍历 Map& 和&& 取 单个
&ul style="list-style: text-align:"&
&li style="float:width: 155px"&用户名&/li&
&li style="float:width: 155px"&密码&/li&
&li style="float:width: 155px"&年龄&/li&
&li style="float:width: 155px"&生日&/li&
&li style="float:width: 155px"&地址&/li&
&div style="clear:"&&/div&
&div&===========遍历所有的=========&/div&
&s:iterator value="maps" status="st"&
&ul style="list-style:"&
&li style="float:width: 155"&
&s:property value="value.name"/&
&li style="float:width: 155"&
&s:property value="value.pwd"/&
&li style="float:width: 155"&
&s:property value="value.age"/&
&li style="float:width: 155"&
&s:property value="value.birthday"/&
&s:property value="value.address"/&
&div&&/div&
&/s:iterator&
&div&===========单独去其中的一个= (知道其中的key=0)========&/div&
&ul style="list-style:"&
&li style="float:width: 155"&
&s:property value="maps['0'].name"/&
&li style="float:width: 155"&
&s:property value="maps['0'].pwd"/&
&li style="float:width: 155"&
&s:property value="maps['0'].age"/&
&li style="float:width: 155"&
&s:property value="maps['0'].birthday"/&
&s:property value="maps['0'].address"/&
21.访问
--http://localhost:8080/Struts2_CollectConversion/login5.jsp
填写信息就可以看到结果了
注意 action中 set 和hashmap 都要 初始化 和 有& get 和set 方法
下载次数: 129
浏览 10406
浏览: 419715 次
来自: 上海
你好,我采用方法二,ConfigInfo.java 打出的结果 ...
&filter- ...
说了半天,没看到楼主用的啥软件,还分绿色版和安装版。。。
ningv 写道ningv 写道lz你的逻辑有误。例如昨天凌晨 ...

我要回帖

更多关于 jsp向action传值 的文章

 

随机推荐