●●●●200分在Struts中,

zsq666 2003-10-22 11:02:37
<logic:iterate id="book" collection="<%=booklist%>" type="shopping.util.Book" offset="0" length="2">
<tr>
<td><%=book.getBookName()%></td>
<td><%=book.getAuthor()%></td>
<td>waiting...</td>
</tr>
</logic:iterate>
...全文
183 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxl19790710 2003-11-03
  • 打赏
  • 举报
回复
相当于列表的遍历
kui 2003-10-30
  • 打赏
  • 举报
回复
下面我给出一个logic:iterate 标签在数据库查询表格显示结果的实例,包含了分页、删除、编辑、更新、连接功能。所有代码由JSPStudio自动产生,JSPStudio下载地址ftp://162.105.80.43/incoming/

代码如下:
lyk.java/lykDAO.java/lykForm.java/lykAction四个文件及20分见:
http://expert.csdn.net/Expert/topic/2400/2400412.xml?temp=.2245447

另外包含分页、连接、删除、更新功能的软件表格文件lykOUT.jsp内容如下:
--------------
<%@ page contentType="text/html;charset=GB2312" language="java" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<html:html>
<head>
<title></title>
<html:base/>
</head>
<body bgcolor="white">
<table cellPadding=2 width="80%" border=2>
<tr>
<td><span CONTENTEDITABLE=true>user_id</span></td>
<td><span CONTENTEDITABLE=true>password</span></td>
<td><span CONTENTEDITABLE=true>name</span></td>
<td><span CONTENTEDITABLE=true>description</span></td>
<td><span CONTENTEDITABLE=true>web_site</span></td>
<td><span CONTENTEDITABLE=true>address</span></td>
<td><span CONTENTEDITABLE=true>删除</span></td>
<td><span CONTENTEDITABLE=true>编辑</span></td>
<td><span CONTENTEDITABLE=true>链接</span></td>

</tr>
<bean:define property='offset' name='lykForm' id='offset' />
<bean:define property='length' name='lykForm' id='length' />
<logic:iterate name='lyk' id='lyk' type='OST.lyk' scope='request' offset='<%= String.valueOf(offset) %>' length='<%= String.valueOf(length) %>'>
<logic:notEqual name='lykForm' property='action' value='edit'>
<tr>
<td><bean:write name='lyk' property='user_id' /></td>
<td><bean:write name='lyk' property='password' /></td>
<td><bean:write name='lyk' property='name' /></td>
<td><bean:write name='lyk' property='description' /></td>
<td><bean:write name='lyk' property='web_site' /></td>
<td><bean:write name='lyk' property='address' /></td>
<td><a href="lykAction.do?action=delete&expression=<bean:write name='lyk' property='user_id' />">删除</a></td>
<td><a href="lykAction.do?action=edit&expression=<bean:write name='lyk' property='user_id' />">编辑</a></td>
<td><a href="lykAction.do?action=link&expression=<bean:write name='lyk' property='user_id' />">链接</a></td>

</tr>
</logic:notEqual>
<logic:equal name='lykForm' property='action' value='edit'>
<tr>
<form method='post' name='lykForm' action="/OST/lykAction.do?action=update&expression=<bean:write name='lyk' property='user_id' />">
<td><html:text name='lyk' property='user_id' /></td>
<td><html:text name='lyk' property='password' /></td>
<td><html:text name='lyk' property='name' /></td>
<td><html:text name='lyk' property='description' /></td>
<td><html:text name='lyk' property='web_site' /></td>
<td><html:text name='lyk' property='address' /></td>
<td><a href="lykAction.do?action=delete&expression=<bean:write name='lyk' property='user_id' />">删除</a></td>
<td><html:submit value='更新'></html:submit></form ><html:form method='post' action='/lykAction.do?action=reset'><html:submit value='取消'></html:submit>
</html:form ></td>
<td><a href="lykAction.do?action=link&expression=<bean:write name='lyk' property='user_id' />">链接</a></td>

</tr>
</logic:equal>
</logic:iterate>

<tr><td align=middle colSpan=10 ><bean:write property='mybeanvariable1' name='lykForm' filter='false' /></td></tr>

</tr>
</table>
</body>
</html:html>
--------------------------------------------------------------------------
其中在“<logic:iterate name='lyk' id='lyk' type='OST.lyk' scope='request' offset='<%= String.valueOf(offset) %>' length='<%= String.valueOf(length) %>'>”中,offset代表本页开始显示的记录,length代码本页显示的记录条数。
<logic:notEqual name='lykForm' property='action' value='edit'> 表示非常编辑时执行下面的代码。
<logic:equal name='lykForm' property='action' value='edit'> 表示编辑时执行下面的代码。
<a href="lykAction.do?action=link&expression=<bean:write name='lyk' property='user_id' />">是显示分页及相应连接的内容。

gfzhx 2003-10-28
  • 打赏
  • 举报
回复
<c:forEach var="book" items="${booklist">
<tr>
<td><c:out value="${book.bookName}" /></td>
<td><c:out value="${book.author}" /></td>
<td>waiting...</td>
</tr>
</c:forEach>
多简单。
具体请参考sun的java stander tag library标准。
gfzhx 2003-10-28
  • 打赏
  • 举报
回复
哈哈,Struts中的标签绝对没有jstl的标签好用,而且还是标准的java规范,多好,完全可以替代Struts中的标签,我们就是用jstl,非常简单而且功能强大,而且自己写的标签还可以用EL语言。
l7980 2003-10-28
  • 打赏
  • 举报
回复
struts中最好只用标签
caodavid2003 2003-10-24
  • 打赏
  • 举报
回复
up
fengcau 2003-10-24
  • 打赏
  • 举报
回复
在逻辑标记库中定义了<logic:iterate>标记,它能够根据特定集合中元素的数目对标记体的内容进行重复的检查。集合的类型可以是java.util.Iterator,java.util.Collection

,java.util.Map或是一个数组。有三种方法可以定义这个集合:

l 使用运行时间表达式来返回一个属性集合的集合

l 将集合定义为bean,并且使用name属性指定存储属性的名称。

l 使用name属性定义一个bean,并且使用property属性定义一个返回集合的bean属性。

当前元素的集合会被定义为一个页作用域的bean。属性如下,所有这些属性都能使用运行时表达式。

属性
描述

collection
如果没有设置name属性,它就指定了要进行重复的集合

Id
页作用域bean和脚本变量的名称,它保存着集合中当前元素的句柄

indexed
页作用域JSP bean的名称,它包含着每次重复完成后集合的当前索引

Length
重复的最大次数

Name
作为集合的bean的名称,或是一个bean名称,它由property属性定义的属性,是个集合

Offset
重复开始位置的索引

property
作为集合的Bean属性的名称

Scope
如果指定了bean名称,这个属性设置bean的作用域。若没有设置,搜索范围从页到应用程序作用域

Type
为当前定义的页作用域bean的类型


例如:

<logic:iterate id=”currentInt”

collection=”<% =myList %>”

type=”java.lang.Integer”

offset=”1”

length=”2”>

<% =currentint %>

</logic:iterate>

代码将从列表中的第一个元素开始重复两个元素并且能够让当前元素作为页作用域和java.lang.Integer类型的脚本变量来使用。也就是说,如果myList包含元素1,2,3,4等,代码将会打印1和2。

软猫克鲁 2003-10-24
  • 打赏
  • 举报
回复
看了一下你的程序:
<%
Iterator booklist =(Iterator)session.getAttribute("bookList");
if(booklist==null)
System.out.println("booklist is null");
else
System.out.println("booklist is NOT null");
%>
这个就是我说的你的booklist 的数据来源—————从session中取得。
[建议]:
你要是自己做项目,就最好不要从session中做数据。完全可以定义一个ActionForm来传递数据。
于是:
<logic:iterate id="book" collection="<%=booklist%>" type="shopping.util.Book" offset="0" length="2">
将会变成:
<logic:iterate id="book" name="YourFormBeanName" property="bookList" type="shopping.util.Book" offset="0" length="2">

软猫克鲁 2003-10-24
  • 打赏
  • 举报
回复
<logic:iterate id="book" collection="<%=booklist%>" type="shopping.util.Book" offset="0" length="2">
<tr>
<td><%=book.getBookName()%></td>
<td><%=book.getAuthor()%></td>
<td>waiting...</td>
</tr>
</logic:iterate>

id-> </logic:iterate>标签内的bean标识名称。
collection-> 一个数据集合。(你的程序中必有booklist数据结构的相关定义<%……%>)
type-> 用于取collection中每个数据时做相应的类型转换。也就是collection中每个元素的类型。
offset-> 偏移量,从什么开始取数据。
length-> 取多长数据。
<%=book.getBookName()%> 这个就完全是取决于每个程序的不同了。写这个程序的老兄好像不太像让你搞明白。其实这样写你会容易明白:<bean:write name="book" property="bookName"/>其作用是完全一样的。
VVV_lucky 2003-10-23
  • 打赏
  • 举报
回复
在jakarta下的struts里都有例子,你看看就完全明白了。
目录嵌套为:
jakarta-struts-1.1-src\jakarta-struts-1.1-src\src\share\org\apache\struts\taglib\logic
phiai 2003-10-22
  • 打赏
  • 举报
回复
Iterator是design pattern中的一种,在java中是一个interface,在struts中则是一个循环标记。
先定义一个id,然后定义你要传递的object,以及这个object的type。之后通过tag来写入每个属性。注意tag的配对。
<logic:iterate name="vesselInList" id="vesselIn" scope="request" type="longkou.entity.VesselIn">
<tr bgcolor=#ffffff align="center">
<td height=25 width="60">
<bean:write name="vesselIn" property="vessel_no"/>
</td>
<td height=25 width="60">
<bean:write name="vesselIn" property="voyage_no"/>
</td>
<td height=25 width="55">
<bean:write name="vesselIn" property="from_port_no"/>
</td>
<td height=25 width="60">
<bean:write name="vesselIn" property="end_port_no"/>
</td>
<td height=25 width="58">
<bean:write name="vesselIn" property="man_approve"/>
</td>
<td height=25 width="101">
<bean:write name="vesselIn" property="dept_approve"/>
</td>
<td height=25 width="162">
<bean:write name="vesselIn" property="date_approve"/>
</td>
</tr>

</logic:iterate>
zsq666 2003-10-22
  • 打赏
  • 举报
回复
补充一下,针对下面的jsp程序,能否解释一下iterate的应用:
<!-- \u8D2D\u4E66\u7F51\u7AD9\u7684\u521D\u59CB\u754C\u9762 -->
<%@ page language="java" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<html:html>
<head>
<title>
<bean:message key="initial.title"/>
</title>
</head>
<body>
<!--input the book name that looked up by logon user -->
<html:form action="/shopping/initialBookAction" focus="form1">
<table>
<tr>
<th>
<bean:message key="initial.lookup" />
</th>
<td>
<html:text property="bookname" size="16" maxlength="16"/>
</td>
<td>
<html:submit property="submit" value="Submit"/>
<html:submit property="submittotallist" value="book list"/>
</td>
</tr>
</table>
<!--display all the book that display
it includes two situations:1,all books
2,the books that looked up
-->
<%
String button1 = (String)request.getParameter("submit");
String button2 = (String)request.getParameter("submittotallist");
if(button1!=null||button2!=null){
%>
<table border="1">
<tr>
<td><bean:message key="initial.bookname"/></td>
<td><bean:message key="initial.author"/></td>
</tr>
<%
Iterator booklist =(Iterator)session.getAttribute("bookList");
if(booklist==null)
System.out.println("booklist is null");
else
System.out.println("booklist is NOT null");
%>
<% for(;booklist.hasNext();){
shopping.util.Book bookTemp = (shopping.util.Book)booklist.next();
%>
<tr>
<td>
<A href="/shopping/shopping/lookupBookAction.do?lookupbookname=<%=bookTemp.getBookName()%>"><%=bookTemp.getBookName()%></A>
</td>
<td><%=bookTemp.getAuthor()%></td>
</tr>
<%}%>
<logic:iterate id="book" collection="<%=booklist%>" type="shopping.util.Book" offset="0" length="2">
<tr>
<td><%=book.getBookName()%></td>
<td><%=book.getAuthor()%></td>
<td>waiting...</td>
</tr>
</logic:iterate>
</table>
<%}%>
</html:form>
</body>

</html:html>
whyxx 2003-10-22
  • 打赏
  • 举报
回复
这里有你想要的东西
http://jakarta.apache.org/struts/userGuide/struts-logic.html
zsq666 2003-10-22
  • 打赏
  • 举报
回复
<logic:iterate id="book" collection="<%=booklist%>" type="shopping.util.Book" offset="0" length="2">
<tr>
<td><%=book.getBookName()%></td>
<td><%=book.getAuthor()%></td>
<td>waiting...</td>
</tr>
</logic:iterate>
中“collection”是什么意思?“offset”、“length”各是什么意思??
Vincent2013SH 2003-10-22
  • 打赏
  • 举报
回复
name是一个集合(如ArrayList);id是给每次循环得到集合中的一个对象起的一个暂时的名字,作用范围在标签体内;type是集合中对象的类型;scope是集合存在的范围(request/session)。
通常与<bean:write name="" property="" filter=""/>配合使用,name值要与前面的id值相等。
我就是靠这个文档实现logic:iterate的循环的
struts 标签 logic:iterate使用 logic:iterate

第一页 是struts官方的说明,
第二页 是个例子
第三页 是我实现的arrayList放入标签的方法。
这是页面文件
<%@ page language="java"
import="java.util.*,cn.edu.bit.zgc2d.accountQuery.*" pageEncoding="GBK"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean"
prefix="bean"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html"
prefix="html"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic"
prefix="logic"%>









<%@ include file="../menu.txt"%>









账务查询


基本信息查询。














基本信息查询。







<logic:iterate id="item" name="list" indexId="index">





logic:iterate>

帐号

帐户别名

是否为主帐户

">







这是action
public class InformationAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
InformationForm informationForm = (InformationForm) form;// TODO Auto-generated method stub
//业务开始
Connection conn = null; Statement st = null; ResultSet rs = null;
try {
db db = new db();
// 打开数据库
conn = db.conn();
// 创建st
st = conn.createStatement();
// 组织sql并执行
HttpSession session_account = request.getSession();
String account = (String) session_account.getAttribute("account");
String sql = "select * from account where main_account=" + account
+ "order by is_main_account desc";
rs = st.executeQuery(sql);
// 组建arrayList列表
ArrayList list = new ArrayList();
while (rs.next()) {
accountBean bean = new accountBean();
bean.setArea(rs.getString("area")); bean.setKind(rs.getInt("kind")); bean.setAccount(rs.getString("account")); bean.setMain_account(rs.getString("main_account")); bean.setType(rs.getInt("type")); bean.setOther_name(rs.getString("other_name")); bean.setPassword(rs.getString("password")); bean.setIs_main_account(rs.getInt("is_main_account")); bean.setMoney(rs.getString("money")); bean.setId(rs.getInt("id"));
list.add(bean);
}
HttpSession session = request.getSession();
session.setAttribute("list", list);
return mapping.findForward("success");
} catch (Exception e) { e.printStackTrace(); }
//业务结束
return null;
}
}//自己将需要的包导入
bean文件
package cn.edu.bit.zgc2d.accountQuery;

public class accountBean {
private String area;
private int kind;
private String account;
private String main_account;
private int type;
private String other_name;
private String password;
private int is_main_account;
private String money;
private int id;
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
public int getKind() {
return kind;
}
public void setKind(int kind) {
this.kind = kind;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getMain_account() {
return main_account;
}
public void setMain_account(String main_account) {
this.main_account = main_account;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public String getOther_name() {
return other_name;
}
public void setOther_name(String other_name) {
this.other_name = other_name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getIs_main_account() {
return is_main_account;
}
public void setIs_main_account(int is_main_account) {
this.is_main_account = is_main_account;
}
public String getMoney() {
return money;
}
public void setMoney(String money) {
this.money = money;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}

67,518

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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