当前位置:编程学习 > JAVA >>

后台保存在request的一组数据,想着JSP页面中用struts2的迭代器循环输出,但是页面一点结果都没有

我现在在做JSP的毕业设计,今天遇到了一个问题,一直解决不了
我在线等!
问题:说明我用S2SH做的,后台的action从数据库查找到了一组数据,
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("lastPublishconference", lastPublishconference);
lastPublishconference里面是有数据的!测试过。
在前台用struts2的迭代器接收的:
<s:iterator value="#request.lastPublishconference" status="st" var="b">
<ul <s:if test="#st.odd"> style="background-color:cyan;"</s:if>>
<li class="title"><s:property value="#b.confCname"/></li>
<li class="theme"><s:property value="#b.confTheme"/></li>
<li class="address"><s:property value="#b.confAddress"/></li>
<li class="time"><s:date name="#b.confDate" format="MM/dd/YYYY"/></li>
</ul>
</s:iterator>
在浏览器中没有显示任何值,但是pagesize(15行)输出了,而行里面应该显示得内容没有显示!
这是说明原因呢? JSP Iterator Struts 类 --------------------编程问答--------------------


以上是显示得页面 --------------------编程问答--------------------
引用 1 楼 kong_yu2123 的回复:



以上是显示得页面



难道是lastPublishconference  这集合里的对象的属性没有getter --------------------编程问答-------------------- 这个还真没有! --------------------编程问答-------------------- 对应的action代码:
package com.gjxshy.action;

import java.util.*;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.gjxshy.tool.*;
import com.gjxshy.entity.*;
import com.gjxshy.service.*;
import com.opensymphony.xwork2.ActionSupport;

public class ConferenceActionScan extends ActionSupport {

ConferenceServiceImpl confrenceService;
private int pageNow = 1 ; //初始化为1,默认从第一页开始显示
private int pageSize = 15 ; //每页显示10条记录

private List<Conference> lastPublishconference;


public String lastPublishConference(){
 Date date = new Date();  
 lastPublishconference = confrenceService.lastPublishConferenceService(pageNow, pageSize,date);
 HttpServletRequest request = ServletActionContext.getRequest();
 request.setAttribute("lastPublishconference", lastPublishconference);
 return null;
}

 public String recommodationConference(){
 int clicks=10; 
 List<Conference> recommodationconference = confrenceService.RecomConferenceService(pageNow, pageSize,clicks);
 HttpServletRequest request = ServletActionContext.getRequest();
 request.setAttribute("lastPublishconference", recommodationconference);
 return null;
 }

public ConferenceServiceImpl getConfrenceService() {
return confrenceService;
}

public void setConfrenceService(ConferenceServiceImpl confrenceService) {
this.confrenceService = confrenceService;
}

public int getPageNow() {
return pageNow;
}

public void setPageNow(int pageNow) {
this.pageNow = pageNow;
}

public int getPageSize() {
return pageSize;
}

public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}

public List<Conference> getLastPublishconference() {
return lastPublishconference;
}

public void setLastPublishconference(List<Conference> lastPublishconference) {
this.lastPublishconference = lastPublishconference;
}

} --------------------编程问答-------------------- 大家主要帮考虑public String lastPublishConference()!
谢谢 --------------------编程问答--------------------
引用 5 楼 kong_yu2123 的回复:
大家主要帮考虑public String lastPublishConference()!
谢谢



还考虑啥啊?  还显示不出来吗 --------------------编程问答--------------------
引用 6 楼 q35335010 的回复:
Quote: 引用 5 楼 kong_yu2123 的回复:

大家主要帮考虑public String lastPublishConference()!
谢谢



还考虑啥啊?  还显示不出来吗

是的!还没显示! --------------------编程问答--------------------


引用 7 楼 kong_yu2123 的回复:
Quote: 引用 6 楼 q35335010 的回复:

Quote: 引用 5 楼 kong_yu2123 的回复:

大家主要帮考虑public String lastPublishConference()!
谢谢



还考虑啥啊?  还显示不出来吗

是的!还没显示!



public String lastPublishConference(){
 Date date = new Date();  
 lastPublishconference = confrenceService.lastPublishConferenceService(pageNow, pageSize,date);
 HttpServletRequest request = ServletActionContext.getRequest();
 request.setAttribute("lastPublishconference", lastPublishconference);

//在这里输出一下你页面上需要的那几个属性,看看到底有木有
for()...

 return null;
}

--------------------编程问答--------------------
引用 8 楼 q35335010 的回复:
Quote: 引用 7 楼 kong_yu2123 的回复:

Quote: 引用 6 楼 q35335010 的回复:

Quote: 引用 5 楼 kong_yu2123 的回复:

大家主要帮考虑public String lastPublishConference()!
谢谢


还考虑啥啊?  还显示不出来吗

是的!还没显示!



public String lastPublishConference(){
 Date date = new Date();  
 lastPublishconference = confrenceService.lastPublishConferenceService(pageNow, pageSize,date);
 HttpServletRequest request = ServletActionContext.getRequest();
 request.setAttribute("lastPublishconference", lastPublishconference);

//在这里输出一下你页面上需要的那几个属性,看看到底有木有
for()...

 return null;
}



这个我做过断点测试的,保证一定有值的,而且是我需要的值! --------------------编程问答--------------------
引用 9 楼 kong_yu2123 的回复:
Quote: 引用 8 楼 q35335010 的回复:




Quote: 引用 7 楼 kong_yu2123 的回复:

Quote: 引用 6 楼 q35335010 的回复:

Quote: 引用 5 楼 kong_yu2123 的回复:

大家主要帮考虑public String lastPublishConference()!
谢谢


还考虑啥啊?  还显示不出来吗

是的!还没显示!



public String lastPublishConference(){
 Date date = new Date();  
 lastPublishconference = confrenceService.lastPublishConferenceService(pageNow, pageSize,date);
 HttpServletRequest request = ServletActionContext.getRequest();
 request.setAttribute("lastPublishconference", lastPublishconference);

//在这里输出一下你页面上需要的那几个属性,看看到底有木有
for()...

 return null;
}



这个我做过断点测试的,保证一定有值的,而且是我需要的值!



这就奇怪了,你有没有把实体类的getter和setter方法补上,如果补上了,我也不清楚了 --------------------编程问答-------------------- 页面有循环但是没有数据,最可能的是struts2标签使用的问题,用<s:iterator value="#request.lastPublishconference" id="b">试试,再就是Conference类打印名称要对应<s:property value="#b.confAddress"/> --------------------编程问答-------------------- 用<s:debug></s:debug>看看值栈里面的值 --------------------编程问答-------------------- 建议将<s:iterator value="#request.lastPublishconference" status="st" var="b">里面的"var"换成"id"试试 --------------------编程问答-------------------- 建议用<s:debug></s:debug> 查看栈里request有没有你存进去的的内容~ 如果有~ 那就是 strust2 的标签使用出错~ strust2标签使用出错一般是不会报错的~
新手常犯的几个错误你自己排查一下:
1.没有在开头引入<%@taglib uri="/struts-tags" prefix="s" %> 标签库
2.<s:iterator />标签使用错误给个资料你参考下
http://blog.sina.com.cn/s/blog_451f5962010150r8.html
3.ognl表达式出错~
4.其他~ 
你的代码没看~ 可以自己逐步收窄出错范围,谷歌解决方案~收获更多~ --------------------编程问答-------------------- 好久没有使用过structs标签了,不过我觉得是不是<s:property value="#b.confCname"/>这里的用法错了,导致输出为空?迭代的时候有15行记录,说明可以取到了集合,然后输出为空。建议这样写试试:${b.confCname} --------------------编程问答-------------------- <s:iterator value="#request.lastPublishconference" status="st" var="b">
<ul <s:if test="#st.odd"> style="background-color:cyan;"</s:if>>
<li class="title"><s:property value="#b.confCname"/></li>
<li class="theme"><s:property value="#b.confTheme"/></li>
<li class="address"><s:property value="#b.confAddress"/></li>
<li class="time"><s:date name="#b.confDate" format="MM/dd/YYYY"/></li>
</ul>
</s:iterator>

你把改成试试

<s:iterator value="#request.lastPublishconference" status="st" var="b">
<ul <s:if test="#st.odd"> style="background-color:cyan;"</s:if>>
<li class="title"><s:property value="confCname"/></li>
<li class="theme"><s:property value="confTheme"/></li>
<li class="address"><s:property value="confAddress"/></li>
<li class="time"><s:date name="confDate" format="MM/dd/YYYY"/></li>
</ul>
</s:iterator> --------------------编程问答-------------------- 直接换成java代码循环输出看看,如果有说明你的代码有问题。


<% 
  接收集合
  遍历
%>
 <%= 元素名 %>
<%
  }
%>

struts 标签库太强大,我一直用不好。
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,