例如往班级里添加学生(姓名,性别),默认只有一行输入框,
在行尾有个加号,点击则用js动态添加一行学生信息文本框,
在多行的情况下,form里怎么定义才能获取到全部填写的学生信息?每个学生姓名的输入框name值该怎样写,name值是一样的,还是不一样?非常感谢。Struts2
在行尾有个加号,点击则用js动态添加一行学生信息文本框,
在多行的情况下,form里怎么定义才能获取到全部填写的学生信息?每个学生姓名的输入框name值该怎样写,name值是一样的,还是不一样?非常感谢。Struts2
解决方案 »
- 求使用My97DatePicker的例子!
- 帮帮我看下错误啊~~~谢谢谢
- tomcat 一运行就调试。还报错。。下面是报错的代码!请大侠们帮忙!
- 一个很奇怪的JSP获取表单数据的问题,望高手来解决
- struts html:text里面不能加class?
- 求助制作简单WAP页面的方面的资料
- 急急急!统计在文本框中输入的字符数的问题?
- 如何用javabean实现jdbc连接sqlserver数据库
- 如何在b/s结构下实现票据套打,但页面上的打印按钮也要打印出来,怎么处理???
- vertx关于异步的初级问题
- 用struts做报表 报表打开没有内容给警告说dataSource为空
- 求教tomcat7+jsp+mysql的配置问题
try {
int count = Integer.parseInt(request.getParameter("count"));
Document doc = DocumentHelper.createDocument();
Element element = doc.addElement("DOCUMENT");
for(int i=1;i<=count;i++){
String ticketPlace = request.getParameter("activity.ticketPlace"+i);
String ticketTime = request.getParameter("activity.ticketTime"+i);
element.addElement("ticketPlace").addText(ticketPlace);
element.addElement("ticketTime").addText(ticketTime);
}
activity = actManService.getActivity(activity.getId());
activity.setTicketPlace(doc.asXML());
actManService.updateActivity(activity);
} catch (Exception e) {
e.printStackTrace();
request.setAttribute("message", "修改取票地址失败!");
return "error";
}
return SUCCESS;
}jsp代码:<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page import="java.util.List" %>
<%@ page import="com.huilian.ticket.module.Activity" %>
<html>
<%
List<Activity> list = (List<Activity>)request.getAttribute("actList");
int count = 0;
%>
<head >
<title>修改领票地址</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link rel="stylesheet" type="text/css"
href="${pageContext.request.contextPath}/publicresource/js/My97DatePicker/skin/WdatePicker.css" />
<link href="/publicresource/style/css.css" rel="stylesheet"
type="text/css" />
<script type="text/javascript"
src="${pageContext.request.contextPath}/publicresource/js/My97DatePicker/WdatePicker.js"></script>
<SCRIPT src="${pageContext.request.contextPath}/publicresource/js/cbvalidator.js"></SCRIPT>
<script type="text/javascript" src="${pageContext.request.contextPath}/backmanage/opinion/fckeditor/fckeditor.js"></script>
</head>
<style>
.tab09 tr td{ padding:5px 10px; border:1px solid #f0f1f3;}
.BLUEbg{ background:#f7f7f7;}
</style>
<body bgcolor="" height="100%">
<br>
<iframe name="fraSubmit" width=0 height=0></iframe>
<form action="" method="post" name="fma" target="fraSubmit" >
<table width="100%" border="1" cellspacing="0" cellpadding="0" align="center" class="tab09">
<input type="hidden" value="${activity.id }" name="activity.id" />
<tr class="BLUEbg">
<td colspan="3" align="center">修改领票地址</td>
</tr>
<tr class="BLUEbg">
<td width="45%" height="26" class="font1" align="center">领票地址</td>
<td width="45%" height="26" class="font1" align="center">领票时间</td>
<td width="10%" height="26" class="font1" align="center"></td>
</tr>
</table>
<table width="100%" border="1" cellspacing="0" cellpadding="0" align="center" class="tab09" id="ttable">
<%
if(list!=null&&list.size()>0){
for(int i=0;i<list.size();i++){
Activity act = list.get(i);
count ++;
String placename = "activity.ticketPlace"+count;
String timename = "activity.ticketTime"+count;
String buttonId = "remove"+count;
String trId = "tr"+count;
%>
<tr id="<%=trId %>">
<td width="45%" height="26" class="font1" align="right">
<input name='<%=placename %>' id='<%=placename %>' type="text" size="60" style="width:100%" value='<%=act.getTicketPlace() %>'/>
<span name="validate" dataId='<%=placename %>' dataType="Empty" msg="第<%=count %>行取票地址不能为空。"></span>
</td>
<td width="45%">
<input name='<%=timename %>' id='<%=timename %>' type="text" size="60" style="width:100%" value='<%=act.getTicketTime() %>'/>
<span name="validate" dataId='<%=timename %>' dataType="Empty" msg="第<%=count %>行取票时间不能为空。"></span>
</td>
<td>
<% if(count!=1&&count==list.size()){%>
<input type="button" value="删除" id='<%=buttonId %>' onclick="removePlace('<%=count %>')"/>
<%}else{ %>
<input type="button" value="删除" id='<%=buttonId %>' onclick="removePlace('<%=count %>')" style="display: none" />
<%} %>
</td>
</tr>
<%
}
}else{
%>
<tr id="tr1">
<td width="45%" height="26" class="font1" align="right">
<input name='activity.ticketPlace1' id='activity.ticketPlace1' type="text" size="60" style="width:100%" value=''/>
<span name="validate" dataId='activity.ticketPlace1' dataType="Empty" msg="第1行取票地址不能为空。"></span>
</td>
<td width="45%">
<input name='activity.ticketTime1' id='activity.ticketTime1' type="text" size="60" style="width:100%" value=''/>
<span name="validate" dataId='activity.ticketTime1' dataType="Empty" msg="第1行取票时间不能为空。"></span>
</td>
<td>
<input type="button" value="删除" id='remove1' onclick="removePlace('1')" style="display: none" />
</td>
</tr>
<%} %>
</table>
<table width="100%" border="1" cellspacing="0" cellpadding="0" align="center" class="tab09" >
<tr>
<td align="center" >
<input type="button" id='buttonId' onclick="updatePlace();" value="提交" />
<input type="button" value="增加一行" onclick="addTR()" />
<input type="button" onclick="history.go(-1);" value="取消" />
</td>
</tr>
</table>
</form>
<span id="spanCode" style="display: none; position:absolute; slategray"></span>
</body>
<script language="JavaScript">
var number = <%=count%>;
function updatePlace(){
//检查输入框中内容是否合法
if(cbValidator.Validate("validate",3))
{
fma.target="_self";
fma.action = "updateTicketPlace.action?count="+number;
fma.submit();
document.all.buttonId.disabled='true';//保存按钮变灰
}
}
function addTR(){
/**var ttable = document.getElementById("ttable");
var row=document.createElement ("tr");
row.id = "tr"+number;
var cell1=document.createElement ("td");
var cell2=document.createElement ("td");
var cell3=document.createElement ("td");
var input1 = document.createElement("input");
input1.type="text";
input1.size="60";
input1.name="activity.ticketPlace"+number;
input1.style.width="100%";
var input2 = document.createElement("input");
input2.type="text";
input2.size="60";
input2.name="activity.ticketTime"+number;
input2.style.width="100%";
var input3 = document.createElement("input");
input3.type="button";
input3.value="删除";
input3.onClick="alert(2)";
cell1.appendChild(input1);
cell2.appendChild(input2);
cell3.appendChild(input3);
row.appendChild(cell1);
row.appendChild(cell2);
row.appendChild(cell3);
ttable.appendChild(row);
number ++;*/
number ++;
var ttable = document.getElementById("ttable");
var new_row=ttable.insertRow(ttable.rows.length);
new_row.setAttribute("id", "tr"+number);
var new_col=new_row.insertCell(0);
new_col.innerHTML="<input type='text' id='activity.ticketPlace"+number+"' name='activity.ticketPlace"+number+"' size='60' style='width:100%' /><span name='validate' dataId='activity.ticketPlace"+number+"' dataType='Empty' msg='第"+number+"行取票地址不能为空。'></span>";
var new_col=new_row.insertCell(1);
new_col.innerHTML="<input type='text' id='activity.ticketTime"+number+"' name='activity.ticketTime"+number+"' size='60' style='width:100%' /><span name='validate' dataId='activity.ticketTime"+number+"' dataType='Empty' msg='第"+number+"行取票时间不能为空。'></span>";
var new_col=new_row.insertCell(2);
new_col.innerHTML="<input type='button' value='删除' id='remove"+number+"' style='display:none' LANGUAGE='javascript' onclick='removePlace("+number+")'>";
var removebutton = document.getElementById("remove"+(number-1));
if(removebutton!=null){
removebutton.style.display="none";
}
var removebutton = document.getElementById("remove"+number);
removebutton.style.display="";
}
function removePlace(value){
number --;
var ttable = document.getElementById("ttable");
ttable.deleteRow(ttable.rows.length-1);
if(number!=1){
var removebutton = document.getElementById("remove"+number);
removebutton.style.display="";
}
}
function closeWin(result){
if(result=='saveOk'){
alert("添加成功!");
}else {
alert(result);
}
window.location.href=window.location.href;
window.location.reload;
}
</script>
</html>
前面用第一个<input type="text" name="students [0].name"><br>
<input type="text" name="students [0].age"><br>
...或者加学生的其他信息
第二个students[1].name 就可以了
这样就是有规律的取了。
我现在按这个做了,但报:java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
错误,我的方法如下:请指正。public class AccForm extends ActionForm {
private int acc_id;
private String acc_time;
private List<AccClientForm> acf = new ArrayList<AccClientForm>(); public List<AccClientForm> getAcf() {
return acf;
}
public void setAcf(List<AccClientForm> acf) {
this.acf = acf;
}
public int getAcc_id() {
return acc_id;
}
public void setAcc_id(int acc_id) {
this.acc_id = acc_id;
}
public String getAcc_time() {
return acc_time;
}
public void setAcc_time(String acc_time) {
this.acc_time = acc_time;
}}
public class AccClientForm { private String client_name;
private String client_plate;//车牌号 public String getClient_name() {
return client_name;
}
public void setClient_name(String client_name) {
this.client_name = client_name;
}
public String getClient_plate() {
return client_plate;
}
public void setClient_plate(String client_plate) {
this.client_plate = client_plate;
}
}
前台:<td>车牌号:</td>
<td><input type="text" name="acf[0].client_plate"> </td>
<td>当事人姓名:</td>
<td><input type="text" name="acf[0].client_name"> </td>
现在我把AccForm里的List<AccClientForm> acf 都删掉就可以正常,劳烦指教。
javax.servlet.ServletException: BeanUtils.populate
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:495)
org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:805)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:203)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
gs.common.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:104)
root cause java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
java.util.ArrayList.RangeCheck(ArrayList.java:546)
java.util.ArrayList.get(ArrayList.java:321)
org.apache.commons.beanutils.PropertyUtilsBean.getIndexedProperty(PropertyUtilsBean.java:433)
org.apache.commons.beanutils.PropertyUtilsBean.getIndexedProperty(PropertyUtilsBean.java:340)
org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:684)
org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:715)
org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:884)
org.apache.commons.beanutils.BeanUtilsBean.populate(BeanUtilsBean.java:811)
org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:298)
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:493)
org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:805)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:203)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
gs.common.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:104)
<input type="text" name="acf[0].client_plate">
这样传进去时,对应的数组size仍是0,所以java.lang.IndexOutOfBoundsException,这种方式有问题
多谢各位。