本人新手,正在做我的毕业设计,用的是SSH框架 我前台用的是Bootstrap框架。当这个页面加载的时候,jquery就会向后台发送请求,然后在前台用<s:iterator>无法遍历从action中传过来的一个list ,list里面存的是3个对象,我是想获取对象里面的值,但是一直都获取不到,不知道是怎么回事,在这里向大家请教一下,谢谢了。。
这是我的action代码
package com.Dunhua.action;
import java.util.ArrayList;
import java.util.List;
import com.Dunhua.pojo.Message;
import com.Dunhua.service.MessageService;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class LookMessageAction extends ActionSupport {
private MessageService messageService;
private List<Message> messagelist=new ArrayList<Message>();
public List<Message> getMessagelist() {
return messagelist;
}
public void setMessagelist(List<Message> messagelist) {
this.messagelist = messagelist;
}
public void setMessageService(MessageService messageService) {
this.messageService = messageService;
}
public MessageService getMessageService() {
return messageService;
}
public String getAllMessage(){
messagelist= messageService.getAllMessage();
ActionContext.getContext().getSession().put("sessionlist",messagelist);
return "success";
}
}
这是jsp代码
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="com.opensymphony.xwork2.ActionContext" %>
<%@ page import="com.Dunhua.pojo.Message" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ 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">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'LookMessage.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<!-- <c:forEach items="${messagelist}">
<tr>
<td><c:out value="messageid"></c:out></td>
</tr>
</c:forEach> -->
<s:iterator value="messagelist" var="obj" status="st">
<tr>
<td>
<s:property value="#obj.messageid"/>
</td>
</tr>
</s:iterator>
<script>
$(document).ready(function(){
var url="message/lookMessageAction.action";
alert(1);
$.post(url,{},null);
});
</script>
</body>
</html>
这是struts.xml里面的配置
<package name="message" namespace="/message" extends="struts-default">
<action name="lookMessageAction" class="lookMessageAction" method="getAllMessage">
<result name="success">/jsp/LookMessage.jsp</result>
</action>
</package>
而且一点错都不报,直接就是页面空白,哪里找问题都找不到。。。 jar包也都是加了的,
------解决思路----------------------
1.后台的messagelist有没有数据
2.前台jsp页面有没有拿到messagelist
3.这个jsp页面是从哪里跳转的,例如http://localhost:8080/xxx/message/lookMessageAction.action
------解决思路----------------------
看你的页面加载方法就发一个请求到后台,其它没做什么特别的任务,那你为什么不直接调用action返回这个页面呢?这样标签肯定是有值的
为啥非要进入这个页面过后再发请求呢?有什么原因吗?
------解决思路----------------------
struts2可以直接注解Action跟Results里面可以直接location写那个页面
然后全局的list会直接放stack里面带到页面的,这样就不用ajax了