如何通过循环将<logic:iterate>中循环的内容填写到ActionForm的JAVA Bean中,在线等待,着急啊!!!

dazhefw521 2004-09-08 09:06:42
<logic:iterate name='Form' id='Form' type='My.Form' scope='request' indexId="index">
<tr>
<td >姓名</td>
<td ><bean:write property="username" name="Form"/></td>
</tr>
</logic:iterate>

假设在程序中以上进行了3次循环,即生成超文本后是这样的



<tr>
<td>姓名 </td>
<td><input type="text" name="username"> </td>
</tr>
<tr>
<td>姓名 </td>
<td><input type="text" name="username"> </td>
</tr>
<tr>
<td>姓名 </td>
<td><input type="text" name="username"> </td>
</tr>

而我的目的上想在输入姓名如:张三,李四,甲乙后按提交将信息输入到数据表userinfo的username字段如
id username
1 张三
2 李四
3 甲乙

但是我不知道如何通过循环将<logic:iterate>中循环的内容填写到ActionForm的JAVA Bean中


不知道我是否说清楚了?注意我的程序用的是Struts的MVC模式,我不希望仅仅是JSP的代码

谢谢各位答友及友情UP
...全文
247 点赞 收藏 15
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
dafei0320 2004-11-04
<logic:present name="userresult" scope="session">
<logic:iterate name="userresult" id="item">
<TABLE width="100%" border="0" cellspacing="0" cellpadding="0" align="center">
<TR bgcolor="#FFCCFF">

<TD><bean:write name="item" property="name"/></TD>

</TR>
<TR bgcolor="#FFFFCC">
<TD>bean:write name="item" property="address"/></TD>
</TR>
</TABLE>
</logic:iterate>
</logic:present>
回复
baffling 2004-11-01
gz
回复
dazhefw521 2004-09-09
能帮忙吗?
回复
dazhefw521 2004-09-09
很抱歉,我还不是很懂的,能否给个正确完整的例子呢,谢谢。

我用的有JSP页,ActionForm,Action和JAVA Bean
其中JAVA Bean是具体的数据更新,插入语句。
回复
dazhefw521 2004-09-09
还是没有解决啊
回复
fantasyCoder 2004-09-08
你也可以参考以Map的方式来传递动态值

http://www.matrix.org.cn/article/959.html
回复
fantasyCoder 2004-09-08
你的页面
<tr>
<td>姓名 </td>
<td><input type="text" name="username"> </td>
</tr>
<tr>
<td>姓名 </td>
<td><input type="text" name="username"> </td>
</tr>
<tr>
<td>姓名 </td>
<td><input type="text" name="username"> </td>
</tr>

你的ActionForm
.
.
.
private String[] username;

public void setUserName(String[] u){
this.userName = u;
}

public String[] getUserName(){
return this.userName;
}
.
.

你的Action对应你的这个Form里便可以
String[] userNames = userForm(form的名称).getUserName();
这样可以取得了...

循环的只要使用同1个property的名称都可以用同一数组表示...
回复
dazhefw521 2004-09-08
继续关注
回复
fantasyCoder 2004-09-08
其实只要ActionForm为属性userName[]就可以了...
然后加上set,get方法...
回复
dazhefw521 2004-09-08
能将这几个文件给我传过来吗?
回复
sagittarius1979 2004-09-08
这个方法在实践中非常好,只是里面用到了java代码<% %>,我想以后的版本应该会用
struts-el来代替。

另外给你官方的解释 :http://struts.apache.org/faqs/indexedprops.html

不知你看懂没有

^_^

回复
sagittarius1979 2004-09-08
这样,运行后的输出结果是:

<h2>Test:
<input type="text" name="lvbeans[0].label" value="1">
<input type="text" name="lvbeans[1].label" value="2">
<input type="text" name="lvbeans[2].label" value="3">
</h2>
回复
sagittarius1979 2004-09-08
Jsp页面代码如下:

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<jsp:useBean id="test2" scope="page" class="test.TestBean"/>
<h2>
Test:
<logic:iterate name="test2" property="lvbeans" id="foo" indexId="ctr">
<html:text name="test2"
property='<%= "lvbeans[" + ctr + "].label" %>'/>
</logic:iterate>
</h2>

回复
sagittarius1979 2004-09-08
public class TestBean extends ActionForm {
.....
private List lvbeans = new ArrayList();
public TestBean(){
//初始化数值
lvbeans.add(new LabelValueBean("1", "1"));
lvbeans.add(new LabelValueBean("2", "2"));
lvbeans.add(new LabelValueBean("3", "3"));
}

public LabelValueBean getLvbeans(int index) {
return (LabelValueBean)lvbeans.get(index);
}

public List getLvbeans() {
return lvbeans;
}

.....


注意上述两个get方法很重要
回复
sagittarius1979 2004-09-08
给你一个struts中index高级的用法,希望对你有所帮助:)。摘自JDON

这个方法在项目实施中很有效,专门用来处理动态生成文本框等的问题。你可以提交FAQ

public class LabelValueBean implements Serializable {
public LabelValueBean(String label, String value) {
this.label = label;
this.value = value;
}

private String label;
public String getLabel() {
return this.label;
}

public void setLabel(String label) {
this.label = label;
}

private String value;
public String getValue() {
return this.value;
}

public void setValue(String value) {
this.value = value;
}

}
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2004-09-08 09:06
社区公告
暂无公告