0 0

【Struts2】如何处理网站首页中的各个子栏目或频道?5

网站的首页一般都会调用很多栏目的最新内容,但是一个action往往只能完成一项任务,请教如何通过一个参数来控制各个栏目的数据调用?

第一次学习struts2,一直没有搞明白?希望大家帮助。
问题补充:
多个list的确可以做在action中,但是灵活性和效率都很差。我希望能够使用一个参数或者像函数调用一样的获取各个栏目的list然后去迭代。

从灵活性,效率上来说还有没有更好的方法?

谢谢!
问题补充:
【例如javaeye的首页】

http://www.iteye.com/

《Java编程和企业应用热点》和《动态语言编程热点》等栏目都是调用同一个数据库知识分类不同而已,难道没有更简单的办法吗?
问题补充:
引用
你可以把这些操作都封装成一个服务层的方法,每次只要传栏目的ID,再调用服务层的方法,就可以得到该栏目下对应的记录。


如何与action联系呢,url调用的时候毕竟对应一个action,对于数据不同类型有异的返回也就是一个result.

那么如何根据不同的类别(参数)返回不同的result?
问题补充:

【sunlightcs 】

尽管不是我所期盼的答案,还是很感谢您。

谢谢!


问题补充:
【一般可以使用ajax异步加载首页内容,这个时候Ba类的queryList可以返回JSON数据,然后再返回客户端再处理。】

如果这样处理,就和dwr和Ext的方式就差不多了,十分感谢您的回答。
2009年10月21日 21:05

3个答案 按时间排序 按投票排序

0 0

采纳的答案

public class ShowNewListAction extends ActionSupport {
	private static String FORWARD = null;

	private List<PBasePurviewUser> userList;
	private List<PBasePurviewRole> userGroupList;

	private UserManageService userManageService;

	public void setUserManageService(UserManageService userManageService) {
		this.userManageService = userManageService;
	}

	public String execute() throws Exception {

		try {
			userList = userManageService.getUserList();
			userGroupList = userManageService.getUserGroupList();
			if (userList != null && userGroupList != null) {
				FORWARD = "success";
			} else {
				FORWARD = "input";
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return FORWARD;
	}

	public List<PBasePurviewUser> getUserList() {
		return userList;
	}

	public void setUserList(List<PBasePurviewUser> userList) {
		this.userList = userList;
	}

	public List<PBasePurviewRole> getUserGroupList() {
		return userGroupList;
	}

	public void setUserGroupList(List<PBasePurviewRole> userGroupList) {
		this.userGroupList = userGroupList;
	}

}

这是我以前项目里去的两个分类下所有元素的代码。其实就是你说的
“多个list的确可以做在action中,但是灵活性和效率都很差。”
但是你能保证“使用一个参数或者像函数调用一样的获取各个栏目的list然后去迭代”的灵活性和效率就比这个好?而且你目前还没想到怎么实现“使用一个参数或者像函数调用一样的获取各个栏目的list然后去迭代”而且楼下回答中有一个用“switch”的,其实效率和灵活性和“多个list在action中”是一样的。

2009年10月24日 01:05
0 0

同一接口,多个实现,java多态特性的体现。

2009年10月21日 23:43
0 0

为每个栏目指定一个唯一的ID,作为参数传入你的Action中,然后根据不同的ID调用不同的业务类查询List的接口将结构返回给Action即可。

		/*columnId:1为最新公告,2为xxxx,3为xxxx,...*/
		String columnId = request.getParameter("columnId");
		Map params = new HashMap();//保存需要的参数
		List list = new ArrayList();
		IndexBa ba;//公共Ba
		switch(Integer.parseInt(columnId)){
		case 1:
			ba = new NoticeBa();
			break;
		case 2:
			ba = new OtherBa();
			break;
		case 3:
                        ba = ...;
			break;
		case 4:
                        ba = ...;
			break;
			...
		}
		list = ba.queryList(params);//各个Ba各自实现queryList接口
		
		...


一般可以使用ajax异步加载首页内容,这个时候Ba类的queryList可以返回JSON数据,然后再返回客户端再处理。

2009年10月21日 23:41

相关推荐

Global site tag (gtag.js) - Google Analytics