如何用Struts标签实现多行提交?
我在网上找了很多资料,
使用数组的用过,可以显示,但是提交的时候
不行,出现Bui之类的,说是数据提交错误使用子类,然后用List
并且扩展类Arrayh后AutoArrayList也出现错误,我的代码如下:
private List course_arraylist = new AutoArrayList(Course.class);使用的AutoArrayList扩展ArrayList
package course;import java.util.ArrayList;public class AutoArrayList extends ArrayList { private Class itemClass; public AutoArrayList(Class itemClass)
{ this.itemClass = itemClass;
} public Object get(int index)
{
try {
while (index >= size())
{
add(itemClass.newInstance());
}
}
catch (Exception e)
{
e.printStackTrace();
}
return super.get(index);
}
}可以显示数据,从程序里面,使用输入框
但不伦如何都无法得到数据
得到的是我用程序输入的,而不是客户端的数据
<html:form method="post" action="/course/course.do?type=do_message"><br><br>
<logic:iterate id="a" name="list" property="course_arraylist" indexId="index">
<html:text name="a" property="course_no" indexed="true" />
<html:text name="a" property="course_name" indexed="true"/> <br>
</logic:iterate>
<html:submit value="submit" />
</html:form>
接受的Action为:
public ActionForward do_message(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
{
CourseForm m_form = (CourseForm) form;
调试这里的m_form是原来的值,并非用户通过输入后改变的值请问是么原因?有没有谁有好的关于使用标签实现多行提交
在jsp里面不写<%%>这样的脚本的程序
我在网上找了很多资料,
使用数组的用过,可以显示,但是提交的时候
不行,出现Bui之类的,说是数据提交错误使用子类,然后用List
并且扩展类Arrayh后AutoArrayList也出现错误,我的代码如下:
private List course_arraylist = new AutoArrayList(Course.class);使用的AutoArrayList扩展ArrayList
package course;import java.util.ArrayList;public class AutoArrayList extends ArrayList { private Class itemClass; public AutoArrayList(Class itemClass)
{ this.itemClass = itemClass;
} public Object get(int index)
{
try {
while (index >= size())
{
add(itemClass.newInstance());
}
}
catch (Exception e)
{
e.printStackTrace();
}
return super.get(index);
}
}可以显示数据,从程序里面,使用输入框
但不伦如何都无法得到数据
得到的是我用程序输入的,而不是客户端的数据
<html:form method="post" action="/course/course.do?type=do_message"><br><br>
<logic:iterate id="a" name="list" property="course_arraylist" indexId="index">
<html:text name="a" property="course_no" indexed="true" />
<html:text name="a" property="course_name" indexed="true"/> <br>
</logic:iterate>
<html:submit value="submit" />
</html:form>
接受的Action为:
public ActionForward do_message(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
{
CourseForm m_form = (CourseForm) form;
调试这里的m_form是原来的值,并非用户通过输入后改变的值请问是么原因?有没有谁有好的关于使用标签实现多行提交
在jsp里面不写<%%>这样的脚本的程序
主要问题就是批量修改,一种就是利用表单数组,你struts配置文件里面formbean定义一个java.lang.String[]数组接受
或者提交之前把所有要修改的记录的各个属性,各自合并成一个字符串,然后到服务端拆解
最后再通过循环更新
记得要把你每条记录的主健传过去,更新或者删除的时候要用,可以在每条记录前加个复选框,值就为ID
jsp:
<html:form action="/update.do">
<logic:iterate id="zhunjiachexing" name="data">
......
.....
<input type="checkbox" name="numbers" value="<bean:write name="zhunjiachexing" property="number"/>" /><html:text name="zhunjiachexing" property="name" size="40" style="text-align:right;" />
<input type="submit" name="submitbtn" value="修改"/>
</logic:iterate>
</html:form>struts-config.xml关于update的formbean属性
<form-property name="name" type="java.lang.String[]"/>
update action部分代码 DynaActionForm daf = (DynaActionForm) actionForm;
String[] names = (String[])daf.get("name");String[] numbers= (String[]) daf.get("numbers");for ( int num = 0; num < numbers.length; num++ ) { //update zhunjiachexing set name=names[num] where number=numbers[num]
}
但是还是不行,得不到客户端输入的值,
可以显示程序已经所给的数组准确的值
接受页面没有错误页面出现,接受的还是程序所给的,非更新值
下面是struts-config.xml配置文件
<form-bean name="string_Teacher_Form" type="string_teacher.String_Teacher_Form" >
<form-property name="teacher_no" type="java.lang.String[]" />
<form-property name="teacher_name" type="java.lang.String[]" />
</form-bean>
……
<action name="string_Teacher_Form" parameter="method" path="/string_teacher/string_teacher" type="string_teacher.String_Teacher_Action">
<forward name="view" path="/string_teacher/string_teacher_view.jsp" />
<forward name="do_message" path="/string_teacher/do_message.jsp" />
</action>
String_Teacher_Form.java
public class String_Teacher_Form extends ActionForm {
private String[] teacher_no;
private String[] teacher_name;
public ActionErrors validate(ActionMapping actionMapping,
HttpServletRequest httpServletRequest) {
/** @todo: finish this method, this is just the skeleton.*/
return null;
} public void reset(ActionMapping actionMapping,
HttpServletRequest servletRequest) {
} public void setTeacher_no(String[] teacher_no) {
this.teacher_no = teacher_no;
} public void setTeacher_name(String[] teacher_name) {
this.teacher_name = teacher_name;
} public String[] getTeacher_no() {
return teacher_no;
} public String[] getTeacher_name() {
return teacher_name;
}
}
下面是String_Teacher_Action.java
public class String_Teacher_Action extends DispatchAction
{
public ActionForward view(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
String_Teacher_Form m_form = (String_Teacher_Form) form;
int m_row=50;
String[] teacher_name = new String[m_row];
String[] teacher_no = new String[m_row];
for(int i=0;i<m_row;i++)
{
teacher_name[i]="teacher_no:"+(i+1);
teacher_no[i]="teacher_name:"+(i+1);
}
m_form.setTeacher_name(teacher_name);
m_form.setTeacher_no(teacher_no);
request.setAttribute("form",m_form);
return mapping.findForward("view");
}
public ActionForward do_message(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
String_Teacher_Form m_form = (String_Teacher_Form) form;
request.setAttribute("form",m_form);
return mapping.findForward("do_message");
}}下面是string_teacher_view.jsp代码
<html:form action="/string_teacher/string_teacher.do?method=do_message" method="POST" >
<table align="center" width="80%" border="1" cellpadding="4" cellspacing="1" bordercolor='red'>
<tr><td>teacher_name</td><td>teacher_no</td></tr>
<logic:iterate id="item" name="form" property="teacher_name" indexId="index">
<tr>
<td> <html:text name="form" property="<%="teacher_name["+index+"]"%>" indexed="true"/></td>
<td> <html:text name="form" property="<%="teacher_no["+index+"]"%>" indexed="true"/></td>
</tr>
</logic:iterate>
</table>
<INPUT TYPE="submit" value="确定">
</html:form>下面是do_message.jsp
<html:form action="/string_teacher/string_teacher.do?method=view" method="POST" >
<table align="center" width="80%" border="1" cellpadding="4" cellspacing="1" bordercolor="steelblue" >
<tr bgcolor="steelblue"><td>teacher_name</td><td>teacher_no</td></tr>
<logic:iterate id="item" name="form" property="teacher_name" indexId="index">
<tr>
<td> <html:text name="form" property="<%="teacher_name["+index+"]"%>" indexed="true"/></td>
<td> <html:text name="form" property="<%="teacher_no["+index+"]"%>" indexed="true"/></td>
</tr>
</logic:iterate></table>
<INPUT TYPE="submit" value="确 定" >
</html:form>以前这种情况的接受会出现
javax.servlet.ServletException: BeanUtils.populate
这样的错误,但是现在不出现了,但是却得不到客户端的输入更新值
还是以前的值
为何?