本人是第一次用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变量不识别,总是报错。不知道问题说清了没有?大哥大姐帮帮忙?有空请你们吃饭了??
解决方案 »
- 关于正则的
- 想前辈们请教一下 想自学JAVA 给点指点
- 各位大哥,struts问题,现在没有分了,帮下忙了
- 用福昕阅读器读pdf正常,但是复制里面的内容到doc出现乱码。
- applet嵌入html问题!急!!谢谢
- 多种文字在一个页面正常显示,有没有好的方案?
- JVM到哪里找javax.servlet.*这个包?
- 为什么我启动weblogic 8。1的examplesServer后不能read the documentation?
- WAS4.0和Jbuilder 8 启动的问题
- 如何在JAVA程序中调用ASP页面得到XML结果?
- 类似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 的值了