本人是第一次用Struts设计,现在遇到一个问题,望各位帮忙相助
(环境是Jbuilder9.0 + Jboss3.2)1)在JSP页面,显示我查询的记录,每行记录前面动态生成一个Checkbox,象新浪的邮箱那样。( 动态的checkbox是这样生成的 <input type="checkbox" name=mid value=<%=i%>> ,i 可以代表每条记录在数据库的ID号,删除记录以此ID号为准)2)在Action里面要根据选中的Checkbox,删除此行记录。action是这样处理的:
String[] checkbox=httpServletRequest.getParameterValues("min")
此语句放在JSP页面没问题,能得到上个页面选中的Checkbox。
但在Action里面总是空值。原因1)
是不是在1)步中我的checkbox没用Struts标志,这个页面包括Form我都没用Struts标志,而Action就不识别了?我想把checkbox的标志改为Struts的,可动态生成的valus没法设置。原因2)
我想用一种比较笨的办法,我这个显示记录的页面是分页的(最多20条)。我想在这个页面根据选中的checkbox来构造一个数组,把它传到Action中去处理。
function getAllDelteRows(count){
var flag=true;
<% ArrayList cardlist = new ArrayList() ;%> if(confirm("真的要删除所有要选中的行吗?")){
for (var i = 0; i < count; i++)
{
if( document.del.mid[i].checked){
var cardtypeid;
cardtypeid = document.del.mid[i].value;
???????????????????????????????
<%System.out.println(cardlist.get(0));%> }
}
session.setAttribute("cardlist",cardlist);
System.out.println(cardlist.get(0)); flag=true;
}
else{
flag=false;
}
return flag; }可Javascript的变量值如何传到Java的变量中(??????处如何处理),在这个javascript函数中,cardlist这个java变量不识别,总是报错。不知道问题说清了没有?大哥大姐帮帮忙?有空请你们吃饭了??
(环境是Jbuilder9.0 + Jboss3.2)1)在JSP页面,显示我查询的记录,每行记录前面动态生成一个Checkbox,象新浪的邮箱那样。( 动态的checkbox是这样生成的 <input type="checkbox" name=mid value=<%=i%>> ,i 可以代表每条记录在数据库的ID号,删除记录以此ID号为准)2)在Action里面要根据选中的Checkbox,删除此行记录。action是这样处理的:
String[] checkbox=httpServletRequest.getParameterValues("min")
此语句放在JSP页面没问题,能得到上个页面选中的Checkbox。
但在Action里面总是空值。原因1)
是不是在1)步中我的checkbox没用Struts标志,这个页面包括Form我都没用Struts标志,而Action就不识别了?我想把checkbox的标志改为Struts的,可动态生成的valus没法设置。原因2)
我想用一种比较笨的办法,我这个显示记录的页面是分页的(最多20条)。我想在这个页面根据选中的checkbox来构造一个数组,把它传到Action中去处理。
function getAllDelteRows(count){
var flag=true;
<% ArrayList cardlist = new ArrayList() ;%> if(confirm("真的要删除所有要选中的行吗?")){
for (var i = 0; i < count; i++)
{
if( document.del.mid[i].checked){
var cardtypeid;
cardtypeid = document.del.mid[i].value;
???????????????????????????????
<%System.out.println(cardlist.get(0));%> }
}
session.setAttribute("cardlist",cardlist);
System.out.println(cardlist.get(0)); flag=true;
}
else{
flag=false;
}
return flag; }可Javascript的变量值如何传到Java的变量中(??????处如何处理),在这个javascript函数中,cardlist这个java变量不识别,总是报错。不知道问题说清了没有?大哥大姐帮帮忙?有空请你们吃饭了??
解决方案 »
- Spring为Struts2依赖注入失败,导致nullpointerexception
- struts2读取数据库问题
- 关于 hibernate tools中,console configuration文件存放的位置
- 高分求助:谁有可以嵌入JSP页面中的文本编辑器?
- 如何将excel文件导入到ORACLE数据库(在JSP环境下实现)
- 为什么j2eesdk-1.4里面没有j2ee.bat文件啊
- 请问,有没有方法能够取到数据库不同数据类型的值,然后赋给一个字符串.
- 在struts中我不想用taglib,想用html带的,如text,可这样怎么和actionForm联系呢?
- servlet调用ejb,servlet需要发布吗?
- 小白请求大牛,mybatis报错
- 类似csdn论谈的左面的树型结构用java怎么实现?
- 有米有人能给我说说状态会话BEAN的主要应用范围?
1。首先在actionFrom中定义一个ArrayList叫props存放你的纪录。同时定义另外一个同长度数组叫checkboxInput对应于jsp上的checkbox。
2。jsp上用<logic:iterate>标签动态生成checkbox及相对应的纪录显示。
<logic:iterate id="BOA0050ID" name="YourFromName" property="props" indexId="index">
<html:checkbox property='<%="checkboxInput[" + (java.lang.Integer) pageContext.findAttribute("index")+ "]"%>' />
</logic:iterate>
3。递交页面时你就判断checkboxInput中哪个值为on就可以直到那个被选中了。
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %>
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %><%@ page language="java"
errorPage="myerror.jsp"
import="java.sql.*,java.util.*,
channelmanage.share.*, sun.jdbc.rowset.CachedRowSet"
%>
<jsp:useBean id="myCardType" scope="session" class="channelmanage.share.CardType" />
<jsp:setProperty name="myCardType" property="*" /><SCRIPT language="JavaScript">
function WirteCheck(){
window.document.writeln(' <td width = 6%>')
window.document.writeln('<input type="checkbox" name="mid" value="checkbox" >')
window.document.writeln('</td>') }
function selectall(length){ document.del.all.checked = document.del.all.checked|0; if (length == 0 ){
return;
}
if (length ==1 )
{
document.del.mid.checked=document.del.all.checked ;
} if (length>1)
{
for (var i = 0; i < length; i++)
{
document.del.mid[i].checked=document.del.all.checked;
}
}
}
function getAllDelteRows(count){
var flag=true;
if(confirm("真的要删除所有要选中的行吗?")){
for (var i = 0; i < count; i++)
{
if( document.del.mid[i].checked){ }
}
flag=true;
}
else{
flag=false;
}
return flag;
}
</SCRIPT>
<html>
<head>
<title>卡类别维护</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body bgcolor="#FFFFFF" text="#000000" background="Images/background.jpg">
<p align="center"><font size="5" color="#0000CC">卡类别维护</font></p>
<form name="del" method="post" action="">
<table width="80%" border="1" cellspacing="3" cellpadding="2">
<tr bgcolor="#00FF00">
<td width="6%" bgcolor="#FFFFCC">
<div align="center">操作</div>
</td>
<td width="13%" bgcolor="#FFFFCC">
<div align="center">卡类别标识</div>
</td>
<td width="13%" bgcolor="#FFFFCC">
<div align="center">卡类别编号</div>
</td>
<td width="20%" bgcolor="#FFFFCC">
<div align="center">卡类别名称</div>
</td>
<td width="10%" bgcolor="#FFFFCC">
<div align="center">卡面值</div>
</td>
<td width="16%" bgcolor="#FFFFCC">
<div align="center">最低折扣值</div>
</td>
<td width="20%" bgcolor="#FFFFCC">
<div align="center">卡类别描述</div>
</td>
<td width="5%" bgcolor="#FFFFCC">
<div align="center">操作</div>
</td> </tr>
<% int pageNo = 0; %>
<% int i =0 ; %>
<% ArrayList cardlist = new ArrayList() ;%>
<%
String tmp=request.getParameter("pageNumber");
int pageNumber = 0;
if (tmp==null || tmp.equals("")){
pageNo = 1;
}else{
try{
pageNo = Integer.parseInt(tmp);
}catch(java.lang.NullPointerException npe){
pageNo =1;
}catch(java.lang.NumberFormatException nfe){
pageNo =1;
}
}
%>
<% Page pagec = null;%>
<%
int pageSize = 10;
CachedRowSet crset = null; try{
crset= myCardType.getAllRows();
pagec = new Page(crset,pageNo,pageSize);
}catch(Exception e){
System.out.println("happen error!!");
}
%>
<%
if (pagec.getData().getRow() >0 ){
for ( i = 0; i<pagec.getPageSize();i++){
%>
<tr>
<SCRIPT language="JavaScript">
WirteCheck()
</SCRIPT>
<td width = 15% align="center"><%= pagec.getData().getInt("card_type_id")%></td>
<td width = 20% align="center" ><%= pagec.getData().getString("card_type_code")%></td>
<td width = 20% align="center"><%= pagec.getData().getString("card_name")%></td>
<td width = 10% align="center"><%= pagec.getData().getInt("card_par_value")%></td>
<td width = 15 align="center"%><%= pagec.getData().getInt("min_disct_value")%></td>
<td width = 20 align="center"%><%= pagec.getData().getString("card_desc")%></td>
<td width = 10%><A href="getCardAction.do?cardtypeid=<%=pagec.getData().getInt("card_type_id")%>" >[修改]</A></td>
</tr>
<%
if (!pagec.getData().next()) break;
}
}
crset.close();
%>
</table>
<%
PageView view = new PageView(request,out,pagec);
view.setVisible(true,0,2);
%>
<TABLE width="80%" BORDER=0 CELLSPACING=2 CELLPADDING=0>
<TD><input type="checkbox" name="all" value=1 onclick=selectall(<%= i%>)>全选 | <A HREF="CardDeleteAction.do?cardlist=<%=cardlist%>" onClick=" return getAllDelteRows(<%= i%>,<%= cardlist%> )">删除</A> | <A HREF="CardAdd.jsp">[增加]</A>
</TABLE>
</form>
</body>
</html>
lj0425(冰芝麻) 的方法我还没有试,
yujinping(JavaFan) 有好的建议吗?
1. javascript function WirteCheck() doesnt take in parameter, so you will have select boxes with same name ("mid") and value ("checkbox"), not '<input type="checkbox" name=mid value=<%=i%>> ' as you wanted. 2. if you dont check any checkbox, your action class will get no value for 'mid'.
3. why do you use javascript to write page content? you might try static html first.
1)我需要用Actionform传递参数,好象必须用struts html tags吧!!不用的话,JSP的输入元素应该不能绑定到ActionForm
2)如果不用这些标志,Struts结构中的Action认吗?
String[] checkbox=httpServletRequest.getParameterValues("min")
目前程序调式好象是不识别的。因为不用Action而用另外一个JSP是可以得到的。3)目前最大的问题是我想把值放到checkbox的value中,
<input type="checkbox" name=mid value=<%=i%>>
通过2)步中的action获取checkbox的值,我可以方便地用这个值操作我的数据库。
但把上面这句改成struts html tags,value属性必须用""括起来,我用双引号,编译时程序报
checkbox的setvalue(int)错误,我记得不很清楚,但大概是这个意思。
我不用双引号,编译是告诉我必须用quote,我真的没办法。
<html:hidden property="checkList"/>更改javascript函数function getAllDelteRows(count){
var flag=true;
var checked_list="";
if(confirm("真的要删除所有要选中的行吗?")){
for (var i = 0; i < count; i++)
{
if( document.del.mid[i].checked){
checked_list=checked_list+document.del.mid[i].value+";";
}
}
flag=true;
}
else{
flag=false;
}
if(flag==true)
document.checkList.value=checked_list;
return flag;
}
ActionServlet中进行
取数据
String list =form.getCheckedList();
String[] checked = list.split(";");
就得到了所有选中的checkbox 的值了