当前位置: 代码迷 >> J2EE >> SSH框架下<s:iterator>标签不起作用,该如何解决
  详细解决方案

SSH框架下<s:iterator>标签不起作用,该如何解决

热度:97   发布时间:2016-04-17 23:24:55.0
SSH框架下<s:iterator>标签不起作用
本帖最后由 u012832308 于 2015-01-10 21:06:25 编辑



本人新手,正在做我的毕业设计,用的是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
------解决思路----------------------
引用:
Quote: 引用:

应该不是标签的问题,你发的是一个ajax请求,不会刷新标签那部分的。如果要页面显示你请求过后的效果,那么你要在post的回调函数里写,或者你改变你的请求方式,不用ajax的方式,自己取舍


我用ajax这个方式是因为我一打开这个页面,就要对后台发送请求,我现在暂时也只学到ajax这个方式,不知道还有没有其他方式可以发送请求

看你的页面加载方法就发一个请求到后台,其它没做什么特别的任务,那你为什么不直接调用action返回这个页面呢?这样标签肯定是有值的
为啥非要进入这个页面过后再发请求呢?有什么原因吗?
------解决思路----------------------
struts2可以直接注解Action跟Results里面可以直接location写那个页面
然后全局的list会直接放stack里面带到页面的,这样就不用ajax了
  相关解决方案