struts 用logic:iterate在页面显示数据后怎样得到logic:iterate的某条数据
小弟最近刚学struts,请各位高人指点一下。
我现在正在做页面,通过action将从数据查询的数据用logic:iterate显示到一个jsp页面。
页面代码如下:
<table border= "1 " width= "50% ">
<tr bgcolor= "#99aa99 ">
<td align= "center " colspan= "4 ">
<b> <font size= "6 " face= "隶书 "> 准驾车型 </b>
</td>
</tr>
<tr bgcolor= "#99cc99 ">
<td align= "center ">
<b> 编号 </b>
</td>
<td align= "center " colspan= "3 ">
<b> 名称 </b>
</td>
</tr>
<logic:iterate id= "zhujiachexing " name= "data " type= " ">
<tr>
<td align= "center " width= "50 ">
<bean:write name= "zhujiachexing " property= "number "/>
</td>
<td align= "center ">
<input type= "text " size= "40 " name= "name " value= " <bean:write name= "zhujiachexing " property= "name "/> " style= "text-align:right; ">
</td>
<td align= "center " width= "60 ">
<html:link action= "Jsp/Jibenxinxi/Zhunjiachexing/updatazhunjiachexing " styleClass= "caozuo "> 修改 </html:link>
</td>
<td align= "center " width= "60 ">
<html:link action= "Jsp/Jibenxinxi/Zhunjiachexing/deletezhunjiachexing " styleClass= "caozuo "> 删除 </html:link>
</td>
</tr>
</logic:iterate>
</table>
我是想做修改,删除和新建。
修改和删除用link调用两个action处理数据,但现在根本得不到变量值,请高人指点一下,小弟万分感谢。
还有新建,我希望点击新建,jsp页面的table就会自动创建一行用于用户录入数据
然后还有个按钮,点击后,将调用action将数据真正录入到数据库。
这几个问题已经困扰我快一周了,我实在是没有能力解决,希望大家帮帮我。
我现在没有分,我是刚注册的,有分以后不会忘记大家的,我先谢谢大家了。
[解决办法]
首先 <logic:iterate id= "zhujiachexing " name= "data " type= " "> 处type不能 " "应该有个确定的类型
其次 <html:link action= "Jsp/Jibenxinxi/Zhunjiachexing/deletezhunjiachexing "处,我没有使用过link标签的action的,我用的是 <html:link page= "xxx.do " paramId= " " paramName= " " paramProperty= " "> 其中paramId是参数名称paramName在你这就是zhujiachexing,paramProperty应该是你的number了,page属性应该换成struts的action地址
[解决办法]
修改也可以,不过的给没有修改该连接加一个onclick事件
通过该事件获得对应文字域的值,并修改自身的url(追加参数)
以上方案一
方案二就是每行都需添加到一个 <html:form> 中这样可以将链接修改为提交按钮
如果不想修改为按钮可以在链接上加入onclick事件,事件就提交对应的form
[解决办法]
你可以建一个action对应多个操作,比如你这里面的 "删除 ", "修改 ", "新建 ",只需要对应一个action只需要在这个action里用判断语句对一个参数进行判断就能进行相应的操作了,往下看.
因为iterate是依次枚举,你想对应某个记录进行操作,那你就把操作的连接写进iterater里不就OK了?比如:
<logic:iterate id = "aaa " name = "bbb " > 不需要写type没有特殊要求每次都没写过
<bean:write xxxxxxx/>
<a href = "xxx.do?disposeType=001&id= <bean:write name= "aaa " property= "id "> "> 删除 </a> //超联结里的参数disposeType就是处理类型,可以在action里判断一下这个参数来决定进行什么操作,比如disposeType=002代表新建.id就是对应的那条记录的代理主键嘛,是数据库里的唯一标示,那么在action里只要有个这个id就能唯一地取出任何一个记录进行处理了.
</logic:iterate>
如果想要新建时候出现一个表单,你可以一开始就把表单写好,比如我一般都写在一个单独的table里,然后把他隐藏,想要新建的时候用javascript把这个table显示出来不就好了
参考:
一个连接或按钮里面加 onclick= "display() " //显示那个表单table
<table style= "display:none " id= "displayNewTable "> //表单table,一开始隐藏在页面上
表单项
</table>
javascript内容
function display(){
document.getElementById( "displayNewTable ").style.display= " ";
}
这样那个table 就显示出来,你往里填吧,填完点这个table里的提交按钮就可以提交这个表单了
,但是我记得action好象只能绑定一个form.java,那就把这个form.java里写上所有要在这个action里调用的属性吧.
[解决办法]
定义一个隐藏域,将你修改的内容存到隐藏域中,提交的时候取隐藏域的内容
[解决办法]
<logic:iterate> 标签外面肯定要加个form标签的,提交地址就是你的修改action
主要问题就是批量修改,一种就是利用表单数组,你struts配置文件里面formbean定义一个java.lang.String[]数组接受
或者提交之前把所有要修改的记录的各个属性,各自合并成一个字符串,然后到服务端拆解
最后再通过循环更新