action
import java.util.List;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.hibernate.Session;import com.myself.hibernate.vo.ReaderAndBook;
import com.myself.hibernateFactory.HibernateSessionFactory;public class Query extends Action {

public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
String sql = "select readerandbook " +
"from Reader reader,ReaderAndBook readerandbook where reader.readerid = readerandbook.TReader.readerid";
Session session = HibernateSessionFactory.getSession();
org.hibernate.Query q = (org.hibernate.Query)session.createQuery(sql);
List list = q.list();
request.setAttribute("readerAndBooks",list);
return mapping.findForward("success");
}
}jsp页面
<%@ page language="java" import="java.util.*,com.myself.hibernate.vo.*"
pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic"
prefix="logic"%>
<html>
<head>
</head> <body>
<form action="${pageScope.path}query.do" method="post">
<input type="submit" value="submit" />
<logic:present name="${requestScope.readerAndBooks}">
<table>
<tr>
<td>
readerandbookid
</td>
<td>
readerid
</td>
</tr>
<logic:iterate id="readerandbook" name="${requestScope.readerAndBooks}">
<tr>
<td>
${readerandbook.readerandbookid}
</td>
<td>
${readerandbook.TReader.readerid}
</td>
</tr>
</logic:iterate>
</table>
</logic:present>
</form>
</body>
</html>
请问我的页面上为什么总没有输出呀???(标签都已经配置好了)

解决方案 »

  1.   

    select readerandbook " + 
    "from Reader reader,ReaderAndBook readerandbook where reader.readerid = readerandbook.TReader.readerid"
    SQL写错了,你只查readerandbook 这一个字段,${readerandbook.readerandbookid} 
    </td > 
    <td > 
    ${readerandbook.TReader.readerid} 怎么可能会有值输出?
    hibernate里面查询表中所有的字段这样写:
    from Reader reader,ReaderAndBook readerandbook where reader.readerid = readerandbook.TReader.readerid
    某几个字段才是你上面那样写
      

  2.   

    for(int i=0;i<list.size();i++){
    Object o = (Object) list.get(i);
    System.out.println(o.getClass());
    System.out.println(o instanceof ReaderAndBook);
    System.out.println(((ReaderAndBook)o).getTReader().getReaderid());
    我在action里加上了上面的代码,能得到我要得到的呀。而且在页面上照我那么写的话
    <logic:present name="${requestScope.readerAndBooks}" > 
    <table > 
    <tr > 
    <td > 
    readerandbookid 
    </td > 
    <td > 
    readerid 
    </td > 
    </tr > 
    <logic:iterate id="readerandbook" name="${requestScope.readerAndBooks}" > 
    <tr > 
    <td > 
    ${readerandbook.readerandbookid} 
    </td > 
    <td > 
    ${readerandbook.TReader.readerid
    </td > 
    </tr > 
    </logic:iterate > 
    </table > 
    </logic:present > 
    怎么没有显示呀?????<logic:present name="${requestScope.readerAndBooks}" > 
    应该能得到吧????加红的部分这么写有错吗???
      

  3.   

    我是这么用logic:iterate标签的
    <logic:iterate id="aqtj" name="aqtjlist">
      <td align="center"><bean:write name="aqtj" property="yonghubianhao"/></font></td>
    </logic:iterate>
    但是我仍然觉得你只查询一个字段,怎么可能会得到整个对象?
    能不能说说System.out.println(o instanceof ReaderAndBook); 
    System.out.println(((ReaderAndBook)o).getTReader().getReaderid()); 
    这里面o instanceof ReaderAndBook和((ReaderAndBook)o).getTReader().getReaderid()是什么意思?
      

  4.   

    那查的不是一个字段是个别名呀。上面的那个for循环能得到我想得到的东西呀,现在我就是想把list传到页面上,可就是没有显示,iterate照我那么用也没有错误呀??还请指点!!!1
      

  5.   

    那查的不是一个字段是个别名呀。上面的那个for循环能得到我想得到的东西呀,现在我就是想把list传到页面上,可就是没有显示,iterate照我那么用也没有错误呀??还请指点!!!1
      

  6.   

    而且我在页面上用request.getAttribute("readerAndBooks");也能得到而且能打印出来,就是用标签的时候什么都不显示呀,不知道怎么搞的
      

  7.   

    <form action="${pageScope.path}query.do" method="post">
    <input type="submit" value="submit" />
    <logic:present name="readerAndBooks">
    <table>
    <tr>
    <td>
    readerandbookid
    </td>
    <td>
    readerid
    </td>
    </tr>
    <logic:iterate id="readerandbook" name="readerAndBooks">
    <tr>
    <td>
    ${readerandbook.readerandbookid}
    </td>
    <td>
    ${readerandbook.TReader.readerid}
    </td>
    </tr>
    </logic:iterate>
    </table>
    </logic:present>
    <table border="1">
    <tr>
    <td width="50" height="10">
    <marquee direction="up" scrollamount="6">
    <a href="#">123</a>
    <br>
    <a href="#">321</a>
    <br>
    <a href="#">132</a>
    <br>
    <a href="#">213</a>
    <br>
    <a href="#">312</a>
    <br>
    </marquee>
    </td>
    </tr>
    </table>
    </form>在页面上为什么改成红色部分的那样就可以呀,我原来
    <form action="${pageScope.path}query.do" method="post" > 
    <input type="submit" value="submit" / > 
    <logic:present name="${requestScope.readerAndBooks}" 
    <table > 
    <tr > 
    <td > 
    readerandbookid 
    </td > 
    <td > 
    readerid 
    </td > 
    </tr > 
    <logic:iterate id="readerandbook" name="${requestScope.readerAndBooks}" 
    <tr > 
    <td > 
    ${readerandbook.readerandbookid} 
    </td > 
    <td > 
    ${readerandbook.TReader.readerid} 
    </td > 
    </tr > 
    </logic:iterate > 
    </table > 
    </logic:present > 
    </form > 
    蓝色的部分,这样写为什么不可以呀?
      

  8.   

    呵呵,${requestScope.readerAndBooks}这个是JSTL标签里面的,你用的是struts标签啊