您的位置:首页 > 编程语言 > Java开发

Struts2有些情况下需要在jsp中嵌套调用action执行的结果

2012-11-21 12:28 309 查看
Struts2有些情况下需要在jsp中嵌套调用action执行的结果

1.NewsAction类

package com.mingda.action;

import java.util.Date;
import java.util.List;
import java.util.UUID;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.springframework.beans.factory.annotation.Autowired;

import com.mingda.entity.News;
import com.mingda.service.NewsService;

@ParentPackage("struts-default")
@Namespace("/")
public class NewsAction {
private NewsService newsService;
private List<News> newses;
public List<News> getNewses() {
return newses;
}

public void setNewses(List<News> newses) {
this.newses = newses;
}

public NewsService getNewsService() {
return newsService;
}

@Autowired
public void setNewsService(NewsService newsService) {
this.newsService = newsService;
}

@Action(value = "newsSave", results = { @Result(name = "success", location = "/news.jsp") })
public String save() {
News news = new News();
news.setId(UUID.randomUUID().toString());
news.setTitle("我爱你");
news.setContent("我稻草打飞机卡拉电视剧考虑ffffffff!");
news.setCreateTime(new Date());
newsService.save(news);
return "success";
}

@Action(value = "newsList", results = { @Result(name = "success", location = "/news.jsp") })
public String list() {
List<News> newses=newsService.listNews();
setNewses(newses);
return "success";
}

}


2.struts2中action跳转页面(news.jsp)

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

<c:forEach  items="${newses}" var="news">
<ul style="width:410px;" class="list fl">
<li><span class="fr"><fmt:formatDate value="${news.createTime}" type="date" pattern="yyyy-MM-dd"/></span><a href="news/252825.shtml"><c:out value="${news.title}"/></a></li>
</ul>
</c:forEach>


3.jsp使用struts2的action标签调用action的页面(test.jsp)

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
新闻测试
<br />
<s:action name="newsList" namespace="/" executeResult="true"/>


4.常见错误:

[org.apache.struts2.components.ActionComponent]Could not execute action: /newsList

There is no Action mapped for action name newsList. - [unknown location]

问题原因:Namespace没有指定。

5.浏览器最后正常显示结果:



6.加入jstl c:if 标签(注意且与或的区别)

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<div class="con clearself">
<c:forEach  items="${newses}" var="news" varStatus="index">
<c:if test="${index.index==0}">
<ul style="width:410px;" class="list fl">
</c:if>
<c:if test="${(index.index%3==0) and (index.index!=0)}">
<ul style="width:410px; margin-left:50px; padding-left:50px; border-left:1px solid #e6e5e5;" class="list fl">
</c:if>
<li><span class="fr"><fmt:formatDate value="${news.createTime}" type="date" pattern="yyyy-MM-dd"/></span><a href="${news.href}"><c:out value="${news.title}"/></a></li>
<c:if test="${index.index%3==2||(fn:length(newses)-1==index.index)}">
</ul>
</c:if>
</c:forEach>
</div>


7.浏览器效果预览:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐