请问各位老师,这样的情况Struts2如何处理?谢谢!

如果加载一个门户的首页,有许多个频道,如何调用action的多个参数啊!
比如:

频道1 = listme.action?id=1

频道2 = listme.action?id=2

频道3 = listme.action?id=3

频道4 = listme.action?id=4

频道5 = listme.action?id=5



就是这样的怎么办?
问题补充:
看了很多网友的回复,感觉很浮躁,已经说的很清楚了。

就是首页加载多个频道问题。
问题补充:
在表现层怎么做啊!!谁能够给一个完整的例子啊!我们在小城市找不到老师问,请大家理解吧!
问题补充:
listme.action?id=1 所获得的结果如何展示出来??

注意是首页,能不能同事调用多个action ??

我是用自定义标签实现,把代码封装进自定义的TAG里,可以跨项目的重用。你不要再补充了,问答只能给你提供思路,具体的细节还是需要自己去思考的,不可能别人为了拿分帮你干活。
总的来说就这几种方式:
1,传统方式,action丢进request里,一般采用map,jsp根据名字从map里拿出对应的list,然后遍历list。
2,AJAX方式,就不说了。
3,自定义标签,这个就是为了解决扩展性与重用性,如果写在action里,以后可能会增加代码,页面action都得改,用这个,就只需要在页面加一个tag,不过不具有通用性,但做开发的谁没有自己积累的东西呢?即使换了公司也只需要把通用的东西更改一下,便可以和新的框架融为一体了,又可以重用了。原理:利用了hibernate的OpenSessionInView,通过配置为jsp开通session作用域,由于jsp到最后都是编译为servelet,所以jsp-tag也会一起被编译,jsp-tag主要封装了调用相关数据库查询方法的代码。

[quote="kaki"]如果加载一个门户的首页,有许多个频道,如何调用action的多个参数啊!
比如:

[code="java"]频道1 = listme.action?id=1

频道2 = listme.action?id=2

频道3 = listme.action?id=3

频道4 = listme.action?id=4

频道5 = listme.action?id=5[/code]

就是这样的怎么办?[/quote]
发错地方了吧。

8) 怎么回事,知道了还问?

频道5 = listme.action?id=5&xxx=xxx

你啥意思?

就这样写着呗

不明白你要问的是什么意思?

你这样写不就是传了一个参数id嘛,
要传多个的话,那就继续在后面加嘛

listme.action?id=1&param=xxx

我觉得可能是你思路上有些不对,是不是一个页面上调出多个栏目的数据?

[quote]你这样写不就是传了一个参数id嘛,
要传多个的话,那就继续在后面加嘛

listme.action?id=1&param=xxx[/quote]

同意
可以传参啊
一个action可以有多个方法的
可以通过参数调用不同的方法啊

不太明白什么意思。是不是不知道传过去的参数在action中怎样获取?

[code="java"]
package cn.ln.chanel.actions;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class ChanelAction extends ActionSupport {
private String logicPath;

@Override
public String execute() throws Exception {
    String param = ServletActionContext.getRequest().getParameter("param");

    if(param.equals("1")) {
        logicPath = "/a.jsp";
    }else if(param.equals("2")) {
        logicPath = "/b.jsp";
    }else if(param.equals("2")) {
        logicPath = "/c.jsp";
    }

    return SUCCESS;
}

public String getLogicPath() {
    return logicPath;
}

public void setLogicPath(String logicPath) {
    this.logicPath = logicPath;
}

}

[/code]

[code="java"]
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">



频道1/s:a
/s:a
/s:a
/s:a
    <iframe id="main" name="main">

    </iframe>


[/code]

[code="java"]
struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"
http://struts.apache.org/dtds/struts-2.0.dtd">





${logicPath}


[/code]

给个提示:
你跳转是不是都有个事件?
如ONCLICK等
我打个比方有很多图片来区分
[code="js"]
function dispatch(id){
document.location.href="listme.action?id="+id;
}
/code]
[code="html"]





[/code]

这种最好就用ajax来异步请求数据,再展示,

你的需求是每个频道都是一个块,块中的数据都是不一样的,刚好可以以ajax的方式,每个块的展示由一个ajax请求的数据来填充

用ajax效率还低啊?不懂从哪方面理解的

不然就可以把数据都放在request里,然后用jsp标签遍历生成各个块的数据

你可以把所有的频道信息id配置在一个xml文件,由action去读取这个配置文件来加载对应的数据不就行了,

你这里不是有这个规则嘛

频道1 对应id=1

频道2 对应id=2

频道3 对应id=3

频道4 对应id=4

频道5 对应id=5

你把这个写在配置文件properties文件中,比如
channel1=1
channel2=2
channel3=3
channel4=4
channel5=5

那你就可以根据配置了多少就去数据库中取哪些数据,页面我想你的频道的显示数据块也有一定有规则吧,看分几栏来显示这些频道,

struts2提供了action标签,可以允许在jsp页面中直接调用action,并可以把action处理的结果包含在页面中来。

可以在action里定一个List getChannelList( Long id )的方法
调用哪个频道由页面定,如,然后直接循环输出,这样可以否

它本身也有遍历的标签嘛,自己遍历list啦,
每个频道都在一个div块中,这部分html代码还是要自己搞一下