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

来源:互联网 发布:广州淘宝服装加工厂 编辑:程序博客网 时间:2024/05/19 10:36

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



0 0
原创粉丝点击