比如有如下页面列表
姓名 民族 年龄
h1 XX 22
h2 XX 23
h3 XX 24年龄列是text框,我现在可以在每一行的年龄列的text框中输入数字,然后有个更新按钮,点击更新按钮可以更新每个人的年龄,依据text框中输入的数.我的问题是我在jsp怎么能一对一的将这些值传给action的form呢?每条数据都有ID,到了action我怎么能知道h1的年龄就是22,h2的年龄就是23呢?hidden中又不能存list?高手指点
姓名 民族 年龄
h1 XX 22
h2 XX 23
h3 XX 24年龄列是text框,我现在可以在每一行的年龄列的text框中输入数字,然后有个更新按钮,点击更新按钮可以更新每个人的年龄,依据text框中输入的数.我的问题是我在jsp怎么能一对一的将这些值传给action的form呢?每条数据都有ID,到了action我怎么能知道h1的年龄就是22,h2的年龄就是23呢?hidden中又不能存list?高手指点
很简单的一个例子
可以用该唯一字段(或唯一字段连接一些其他字符串)作为年龄edit的id,
这样传到 action后, 可以有两种方法设置值:
一,通过同样的条件查询出显示在页面的那些数据,然后根据这些数据的唯一字段进行处理后就能在 request中获取对应的年龄值了,再设置就行了。二,与一切好是相反的。
先从 request里面获取所有的年龄传过来的值,这个可以通过查询request里面变量名是否符合你在jsp上年龄edit名来获取,然后解析这些符合edit名的变量名,获取 唯一字段,这样有了唯一字段和传过来的值后也能设置值了。
第一行
<input type="hidden" name="flag" value="1" />
<input name="nationality_1" />
<input name="name_1" />
<input name="age_1" />第二行
<input type="hidden" name="flag" value="2" />
<input name="nationality_2" />
<input name="name_2" />
<input name="age_2" />...action
String[] flags = request.getParameterValues();
for(String flag : flags ) {
....
}
<form action="user.do">
<table>
<tr>
<td>
<input type="text" name="names" value="h1" />
</td>
<td>
<input type="text" name="ages" />
</td>
</tr>
<tr>
<td>
<input type="text" name="names" value="h2" />
</td>
<td>
<input type="text" name="ages" />
</td>
</tr>
<tr>
<td>
<input type="text" name="names" value="h3" />
</td>
<td>
<input type="text" name="ages" />
</td>
</tr>
</table>
</br>
<input type="submit" value="修改" />
</form>ActionFormpublic class UserForm extends ActionForm{
private String[] names;
private String[] ages;
public String[] getNames() {
return names;
}
public void setNames(String[] names) {
this.names = names;
}
public String[] getAges() {
return ages;
}
public void setAges(String[] ages) {
this.ages = ages;
}
}
配置文件: <form-beans >
<form-bean name="userForm" type="com.yourcompany.struts.form.UserForm" />
</form-beans>
<action-mappings >
<action
path="/user"
scope="request"
name="userForm"
input="/index.jsp"
type="com.yourcompany.struts.action.UserAction">
<forward name="xxx" path="/xxx.jsp"></forward>
</action>
</action-mappings>Action:这里我们就为了打印输出。public class UserAction extends Action{
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
UserForm userForm = (UserForm) form;
String[] strs=userForm.getNames();
String[] ages=userForm.getAges();
for(int i=0;i<strs.length;i++){
System.out.println(strs[i]+" "+ages[i]);
//从输出结果上,你可以明白他们数组的下标都是相同的。
}
return mapping.findForward("xxx");
}
}
我这个程序还不能直接submit,必须要掉js,然后要跳转,不能直接提交form,所以页面中的一些值是带不过去的
你同样可以把age存储起来和原来的比较啊