请求Action的路径、参数设置及Struts2的Action向JSP传输List集合并且将数据显示在页面上

本文介绍了如何在Struts2框架下,将Action中的List<String>和List<User>类型的集合传给JSP,并在页面上显示。详细展示了Action和JSP中的代码实现,同时讲解了如何处理动态参数,如通过<s:property>标签获取Action返回的参数值,并讨论了URL中特殊字符的编码转换问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、当类型是List<String>时

 Action中代码:

List<String> list = new ArrayList<String>();
            list.add("zhangsan");
            list.add("lisi");
            list.add("wangwu");
        ActionContext.getContext().put("list", list);
        return SUCCESS;

 JSP中代码:

导入标签库:

<%@ taglib prefix="s" uri="/struts-tags"%> 

用 Struts2的s标签:

 <center>
    	<s:iterator id="li" value="list" status="">
    	<s:property value="li"></s:property></br>
    	</s:iterator>	
    </center>

 迭代循环之后会将List集合中的String类型的数据一一显示在页面上。

2、当类型是List<User>(User是实体类)时

Action中代码:

List<User> list= new ArrayList<User>();
ActionContext.getContext().put("list", list);

当User中有name、password等多个属性时,我们从数据库中查询取出多条记录,放入List<User>集合中,然后传输到JSP并显示在页面上:

<s:iterator value="list" status="li">
<s:property value="username"/></br>
<s:property value="password"/></br>
</s:iterator>3.当使用<a>标签访问Action时:jsp页面 中a标签
<a  href="${pageContext.request.contextPath}/namespace/registerAction_login.action>xxx</a>

上面的代码同样需要导入标签库,也可以对显示的数据内容进行包装。

顺便提一下,当数据类型为Map集合时,实现代码与类型为List<User>时类似,JSP用s标签根据Map集合中的key来取值:<s:property value="key"/>



首先说一下我的web应用是通过<a>标签调用struts2框架下的一个action,给该action传递一个参数,然后action通过这个参数进行相应的处理。

方法是: <a href="../actionName?phoneName=XXX">点击我</a>

问号后面是参数的名称。当然调用的action里面要有相应的变量来接受这个参数。


那么如果参数是动态生成的,比如我要传递的参数phoneName并不是一个固定的值,而是另一个action生成的。

比如我的应用中,要展示一个手机产品的页面。但是这个页面的所有信息就是一个action,比如是action1生成的,因此里面的所有数据也都是action1返回的。那么我在action1生成的页面里点击<a>标签想要调用action2,但是参数却是action1生成的参数。则可以采用如下方法:

 <a href="../actionName?phoneName=<s:property value='phoneName' />">点击我</a>

这里直接使用<s:proerty>标签获得action1返回的参数。phoneName就是action1返回的一个参数名称。注意使用单引号括起来。


再有一个问题就是,如果我的参数,比如上例中的phoneName,是iphone 6,但是url地址中并不允许出现空格。因此如果phoneName直接是iphone 6,就无法正确执行该action。这时候需要用一些其他字符来代替这些特殊字符:

+                       %2B   
空格                  %20 
/                        %2F     
?                       %3F     
%                      %25     
#                       %23     
&                       %26     
=                       %3D

比如你要传递的参数是Galaxy S6 Edge+,那么正确的url应该是Galaxy%20S6%20Edge%2B



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值