日期:2014-05-17  浏览次数:20731 次

解决了你就是高手``servlet set的参数jsp接收不到``各位高手帮忙看下`纠结了很久了`
我在servlet set了个数组想让它的元素在jsp的下拉表框显示,可是jsp没得到想要的结果``
servlet:
request.setAttribute("noticeList", DaoFactory.getNoticeDaoInstance().find(key,recordStart,recordEnd));
=============================================================================================
jsp:
  <c:forEach var="notice" items="${noticeList}">
  <tr>
  <td align="center"><c:out value="${notice.title}"></c:out></td>
=====================================================================================
find():
public List<Notice> find(String key,int recordStart,int recordEnd) {
List<Notice> list=new ArrayList<Notice>();
if(conn!=null){
StringBuffer sb=new StringBuffer("select * from tb_notices where 1=1");
if(key!=null&&!"".equals(key)){
sb.append(" and title like '%"+key+"%' or content like '%%"+key+"'");
}
if(recordStart!=-1){
sb.append(" and rownum>="+recordStart);
}
if(recordEnd!=-1){
sb.append(" anf rownum<="+recordEnd);
}
PreparedStatement pstmt=null;
ResultSet rs=null;
try{
pstmt=conn.prepareStatement(sb.toString());
rs=pstmt.executeQuery();
if(rs.next()){
Notice notice=new Notice();
notice.setContent(rs.getString("content"));
notice.setInTime(rs.getString("inTime"));
notice.setnId(rs.getInt("nId"));
notice.setTitle(rs.getString("title"));
list.add(notice);
}
=============================================================================================
ps:DaoFactory.getNoticeDaoInstance().find(key,recordStart,recordEnd);这个方法是取到参数了的,我在jsp试了下:
<%
List list=DaoFactory.getNoticeDaoInstance().find(key,recordStart,recordEnd);
System.out.println(list.size());
%>
这样输出的是1,好奇怪``数据库这边的数据明明就有10条,可只能取到一条``问题出在哪了?而且把
<%
request.setAttribute(“noticeList”,DaoFactory.getNoticeDaoInstance().find(key,recordStart,recordEnd));
%>
放到jsp,这样jstl显示代码不变下拉表框也是只显示数据库的第一条数据。。据我推测`问题是servlet set的参数根本传不来,还有find()那有问题,或许显示也有问题。各位`帮下忙啊``如果解决了 感激不尽 谢谢~!

------解决方案--------------------
Java code

if(rs.next()){// if 改成while就OK了