我的页面时用struts2的标签写的,页面功能是显示查询记录,记录的显示我用了<s:iterator value = "list"><s:property value = "barCode"></s:iterator>,在action中,我将list写了一个get/set方法对,后台都能打印出来list值,但是页面上不能显示不能显示,现将页面和action代码贴出来,各位大侠看看。AmmeterDetect.jsp代码如下:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri = "/struts-tags" prefix = "s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>    <!-- ahthor:zhixueyin
      description:电能表质量检测
      time:2009-4-19
     -->
    <title>AmmeterDetect.jsp</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">
-->

 
<s:head/>
  </head>  <body>
   <s:form action = "AmmeterDetect.action" name = "check_form" method = "post" theme = "simple">
    <table border = "1">
    <tr>
    <%--<td width="100">
     开始日期       </td>
       <td width="177">
        <s:datetimepicker name = "start_time" label = "Format(yyyy-MM-dd )" displayFormat="yyyy-MM-dd" value = ""></s:datetimepicker>
     </td>
     <td width="100">
     结束日期       </td>
    <td width="177">
    <s:datetimepicker name = "end_time" label = "Format(yyyy-MM-dd)" displayFormat="yyyy-MM-dd" value = ""></s:datetimepicker>
   </td>
    --%><td width="215">
    <s:submit  type = "submit"  name = "submit" value = "查询"></s:submit>
   </td>
    </tr>
    <tr>
    <td width="100">
    计量器具编号
    </td>
    <td width="177">
    <input type = "text" name = "userid"  value = "">
    </td>
    </tr>
    </table>
    <table>
    <tr>
    <td>
    条形码
    </td>
    <td>
    计量器具名称
    </td>
    <td>
    型号规格
    </td>
    <td>
    准确度
    </td>
   
    <td>
    产权
    </td>
    <td>
    额定一次电压(电流)
    </td>
    <td>
    额定二次电压(电流)
    </td>
    <td>
    额定功率因数
    </td>
    <%--<td>
    额定频率
    </td>
    --%><td>
    检定结果
    </td>
    <td>
    绝缘电阻
    </td>
    <td>
    工频耐压
    </td>
    <td>
    极性
    </td>
    <td>
    最大变差
    </td>
    <td>
    审核
    </td>
    <td>
    检定人
    </td>
    <td>
    检定时间
    </td>
    <td>
    结论说明
    </td>
    <td>
    生产厂家
    </td>
    </tr>
   
    <s:iterator value="ammList" >
    <tr>
    <td>
    <s:property value="barCode"/>
    </td>
    <td>
    <s:property value="measureInstrumentName"/>
    </td>
    <td>
    <s:property value="measureInstrumentKind"/>
    </td>
    <td>
    <s:property value="checkoutDate"/>
    </td>
    <td>
    <s:property value="checkoutPerson"/>
    </td>
    <td>
    <s:property value="auditingPerson"/>
    </td>
   
    <%--<td>
    <s:property value="额定频率"/>
    </td>
    --%><td>
    <s:property value="resultExplain"/>
    </td>
    <td>
    <s:property value="productFactory"/>
    </td>
    <td>
    <s:property value="propertyRight"/>
    </td>
    <td>
    <s:property value="firstRatingVoltage"/>
    </td>
    <td>
    <s:property value="secondTatingVoltage"/>
    </td>
    <td>
    <s:property value="checkResult"/>
    </td>
    <td>
    <s:property value="insulatedResistor"/>
    </td>
    <td>
    <s:property value="frequencyVoltage"/>
    </td>
   
    <td>
    <s:property value="polarity"/>
    </td>
   
    <td>
    <s:property value="maxBalance"/>
    </td>
    <td>
    <s:property value="nicety"/>
    </td>
    <td>
    <s:property value="ratingFac0tor"/>
    </td>
    </tr>
    </s:iterator>
    </table>
   </s:form>
  </body>
</html>
action的代码如下:
package com.action;import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;import javax.servlet.http.*;
import org.apache.struts2.ServletActionContext;import com.Service.AmmeterDetectService;
import com.Service.AmmeterDetectServiceImpl;
import com.opensymphony.xwork2.ActionSupport;
import com.ufinity.rms.model.DlAmmeterCheckinData;
public class AmmeterDetect extends ActionSupport
{
List<DlAmmeterCheckinData> ammList;
public List<DlAmmeterCheckinData> getAmmList() {
return ammList;
}
public void setAmmList(List<DlAmmeterCheckinData> ammList) {
this.ammList = ammList;
}
public String execute() throws Exception
{
//HttpServletResponse response = ServletActionContext.getResponse();
HttpServletRequest request = ServletActionContext.getRequest();
try
{

String userid = request.getParameter("userid");
Integer id = Integer.valueOf(userid);
//新建一个持久化对象
DlAmmeterCheckinData dacd = new DlAmmeterCheckinData();
//dacd.setAmmeterId(request.getParameter(userid));
dacd.setId(id);
//新建一个数据库访问代理
AmmeterDetectService service = new AmmeterDetectServiceImpl();
//浏览数据库记录
ammList = service.findAmmeter(id);
//request.setAttribute("DataSet", list);
return SUCCESS;
}
catch(Exception ex)
{
ex.printStackTrace();
return null;
}
}
}

解决方案 »

  1.   

    前后台都没有报错吗?你在IE中,右键查看源代码,把生成的HTML代码贴上来看看。
      

  2.   

    配置文件及AmmeterDetect对应配置文件贴出来看看
      

  3.   

    我的测试代码
    <s:iterator id="l" value="list">
          <s:property  value="id"/>
          <s:property  value="name"/>
          <s:property  value="password"/>
        </s:iterator>
    public class ShowData extends ActionSupport{
    private List<Object> list; @Override
    public String execute() throws Exception {
    Connection con = Mysqljdbc.getConnection();
    Statement st = con.createStatement();
    ResultSet rs = st.executeQuery("select * from user;");
    list = new ArrayList<Object>();
    while(rs.next()){
    User user = new User();
    user.setId(rs.getString(1));
    user.setName(rs.getString(2));
    user.setPassword(rs.getString(3));
    list.add(user);
    }
    Mysqljdbc.closeConnection(con);
    return "success";
    } public List getList() {
    return list;
    } public void setList(List<Object> list) {
    this.list = list;
    }}
    完全可以显示
    没有任何问题
      

  4.   

    判断下这个LIST为不为空 然后你的ACTION是转发到这个JSP页面还是重定向来的
      

  5.   

    转发的,struts2配置文件配好的,list不为空,Hql语句为String HQL = "select ammeter, equipment from DlAmmeterCheckinData as ammeter, DlEquipmentCheckinInfo  as equipment where  ammeter.equipment.id = equipment.id and ammeter.id =:id ";看看有没有什么问题?但是用String HQL = "select ammeter from DlAmmeterCheckinData as ammeter, DlEquipmentCheckinInfo  as equipment where  ammeter.equipment.id = equipment.id and ammeter.id =:id ";却能显示一部分,另外一张表的字段显示不了
      

  6.   

    这个问题我也遇到了,我是这样解决的:
                    <s:iterator value="myscore" status="stat">               
                    <tr>
                    <td><s:property value="myscore[#stat.index][1]"/></td>
                    <td><s:property value="myscore[#stat.index][0]"/></td>                           
                    </tr>
                   </s:iterator>
    当查询两张表的值时,value=表的字段名,在网页真没输出值,
    期待其他好方法。
      

  7.   

    把ammList = service.findAmmeter(id); 
    这样写 
    List list=service.findAmmeter(id);  
    ammList.add(list);吧在循环看看 ammList 里的值。
      

  8.   

    问题解决了,就用楼上兄弟的办法,很不错,谢谢了,用iterator标签的status属性用二维数组