iterate标签一问,急急急!!!!!!在先等

nixun 2003-10-19 05:05:50
我想在浏览器输入http://localhost:8080/test2/Test.do
然后显示从数据库中查出的内容,但是它只是进行了乡音的循环,没有显示数据.急急急
config-xml:

<data-sources>
<data-source key="data">
<set-property property="autoCommit" value="true"/>
<set-property property="driverClass" value="oracle.jdbc.driver.OracleDriver"/>
<set-property property="password" value="manager"/>
<set-property property="url" value="jdbc:oracle:thin:@localhost:1521:data"/>
<set-property property="user" value="system"/>
</data-source>
</data-sources>
<action-mappings>
<action path="/Test" type="pub.TestAction">
<forward name="success" path="/index.jsp"/>
<forward name="failure" path="/indexFail.jsp"/>
</action>
</action-mappings>

TestAction.java

package pub;

import org.apache.struts.action.* ;
import javax.servlet.http.* ;
import javax.sql.* ;
import java.util.* ;
import java.sql.* ;
import java.io.* ;

/**
* @author Administrator
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class TestAction extends Action
{
public ActionForward perform( ActionMapping mapping ,
ActionForm form,
HttpServletRequest req ,
HttpServletResponse res )
{
DataSource ds = servlet.findDataSource("data");
try
{
Connection conn = ds.getConnection( );
Statement stmt = conn.createStatement( );
String sql = "select * from Gh_Js" ;
ResultSet rs = stmt.executeQuery( sql );
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
ArrayList rows = new ArrayList();
while(rs.next())
{
HashMap row = new HashMap();
for (int i = 1; i <= columnCount; i++)
{
String name = rsmd.getColumnName(i);
row.put(name, rs.getObject(i));

}
rows.add(row);
}
rs.close();
stmt.close();
conn.close();
req.setAttribute("rows",rows);
return mapping.findForward("success") ;
}
catch (Exception ex)
{
return mapping.findForward("failure");
}

}
};

index.jsp
<%@ page contentType="text/html;charset=GB2312"%>
<%@ taglib uri = "/WEB-INF/struts-html.tld" prefix = "html" %>
<%@ taglib uri = "/WEB-INF/struts-bean.tld" prefix = "bean" %>
<%@ taglib uri = "/WEB-INF/struts-logic.tld" prefix = "logic" %>
<%@ page import="java.util.*"%>
<html>
<head>
</head>
<body>
<table border="1" width="200">
<logic:iterate name="rows" id="row" scope="request" >
<tr height="30">
<td><bean:write name="row" property="Jsbh" /></td>
<td><bean:write name="row" property="Jsmc" /></td>
</tr>
</logic:iterate>
</table>
</body>
</html>
...全文
112 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
nixun 2003-10-19
  • 打赏
  • 举报
回复
为什么显示的时候还要加一个action="/myTest.do"呢?
nixun 2003-10-19
  • 打赏
  • 举报
回复
编一都没办法通过
提示:
org.apache.jasper.JasperException: Cannot retrieve definition for form bean null
nixun 2003-10-19
  • 打赏
  • 举报
回复
我的数据库不是空的,我换一个逝世看
希偌 2003-10-19
  • 打赏
  • 举报
回复
所以我怀疑你数据库字段的内容是否是空或者null???
希偌 2003-10-19
  • 打赏
  • 举报
回复
我测试的结果到是正确的,环境:
weblogic7+SQLServer
<%@ page contentType="text/html;charset=GB2312" import="java.util.*"%>
<%@ taglib uri="/tags/struts-html" prefix="html"%>
<%@ taglib uri="/tags/struts-bean" prefix="bean"%>
<%@ taglib uri="/tags/struts-logic" prefix="logic"%>

<html>
<head>
</head>
<body>
<html:form action="/MyTest.do">
<logic:present name="rows" scope="request">
<table border="1" width="200">
<logic:iterate name="rows" id="row" scope="request" >
<tr height="30">
<td><bean:write name="row" property="newstitle" /></td>
<td><bean:write name="row" property="newsdate" /></td>
</tr>
</logic:iterate>
</table>
</logic:present>
<logic:notPresent name="rows" scope="request">

<html:text property="username" />
<html:submit property="mysubmit"/>

</logic:notPresent>
</html:form>
</body>
</html>
--------------------------------
myAction.java
------------------
package app;

import org.apache.struts.action.* ;
import javax.servlet.http.* ;
import javax.sql.* ;
import java.util.* ;
import java.sql.* ;
import java.io.* ;

/**
* @author Administrator
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class myAction extends Action
{

public ActionForward execute( ActionMapping mapping ,
ActionForm form,
HttpServletRequest req ,
HttpServletResponse res )//我使用的是struts1.2所以这里是execute,而不是perform
{

try
{
DataSource ds = (DataSource)new javax.naming.InitialContext().lookup("SQLServer");//在weblogic里设置了数据源
System.out.println("xyz");
Connection conn = ds.getConnection( );
Statement stmt = conn.createStatement( );
String sql = "select * from NewsData" ;
ResultSet rs = stmt.executeQuery( sql );
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
ArrayList rows = new ArrayList();
while(rs.next())
{
HashMap row = new HashMap();
for (int i = 1; i <= columnCount; i++)
{
String name = rsmd.getColumnName(i);
row.put(name, rs.getObject(i));

}
rows.add(row);
}
rs.close();
stmt.close();
conn.close();
req.setAttribute("rows",rows);
return mapping.findForward("myURL1");
}
catch (Exception ex)
{
ex.printStackTrace();
}
return mapping.findForward("myURL");

}
};
提交之后得到数据库
字段
newstitle
newsdate
的列表
nixun 2003-10-19
  • 打赏
  • 举报
回复
大哥们,帮帮忙吧
我很急啊。。。!!!!!
nixun 2003-10-19
  • 打赏
  • 举报
回复
多谢!!
希偌 2003-10-19
  • 打赏
  • 举报
回复
name不是必须的,参考struts in action
<logic:iterate id="item" property="items">
<html:multibox property="selectedItems">
<bean:write name="item"/>
</html:multibox>
<bean:write name="item"/>
</logic:iterate>
你的问题,我要自己调试一下再说
nixun 2003-10-19
  • 打赏
  • 举报
回复
不行,提示
org.apache.jasper.JasperException: Cannot find bean null in scope request
name 应该是必需的把
希偌 2003-10-19
  • 打赏
  • 举报
回复
这样试试
<logic:iterate name="rows" id="row" scope="request" >
-->
<logic:iterate property="rows" id="row" scope="request" >
希偌 2003-10-19
  • 打赏
  • 举报
回复
<bean:write name="row" />
将property属性去掉看看
希偌 2003-10-19
  • 打赏
  • 举报
回复
搞错,不好意思
nixun 2003-10-19
  • 打赏
  • 举报
回复
我理面没有form
因为浏览器里没有表单要提交
nixun 2003-10-19
  • 打赏
  • 举报
回复
up!!!急急急
希偌 2003-10-19
  • 打赏
  • 举报
回复
别忘了在ActionForm里设置
public void getRow(){}
这个getter方法
nixun 2003-10-19
  • 打赏
  • 举报
回复
加了id="row"后也不行
提示
org.apache.jasper.JasperException: No getter method for property row of bean rows
nixun 2003-10-19
  • 打赏
  • 举报
回复
to beyond_xiruo(Java/.NET两手抓,两手都要硬) ( ) 信誉:622
还是不行那
提示 org.apache.jasper.JasperException: /index.jsp(10,3) According to the TLD attribute id is mandatory for tag iterate
nixun 2003-10-19
  • 打赏
  • 举报
回复
我的数据库众原来又7条数据
它循环了7次,但是就是不显示结果。数据库的操作没有问题,我在TestAction.java众输出过
希偌 2003-10-19
  • 打赏
  • 举报
回复
<logic:iterate name="rows" id="row" scope="request" >
-->
<logic:iterate name="rows" property="row" scope="request" >
nixun 2003-10-19
  • 打赏
  • 举报
回复
结果浏览器显示如下

<html>
<head>
</head>
<body>
<table border="1" width="200">

<tr height="30">
<td></td>
<td></td>
</tr>

<tr height="30">
<td></td>
<td></td>
</tr>

<tr height="30">
<td></td>
<td></td>
</tr>

<tr height="30">
<td></td>
<td></td>
</tr>

<tr height="30">
<td></td>
<td></td>
</tr>

<tr height="30">
<td></td>
<td></td>
</tr>

<tr height="30">
<td></td>
<td></td>
</tr>

</table>
</body>
</html>

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧