首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

40荤! 关于jsp 查询语句中获得得复选框里的值的有关问题

2012-02-13 
40荤! 关于jsp 查询语句中获得得复选框里的值的问题先是一个changes.jsp的关键代码,他的目的是实现复选框

40荤! 关于jsp 查询语句中获得得复选框里的值的问题
先是一个   changes.jsp   的关键代码,他的目的是实现复选框里的多值

<%
String   bookType[]={ "dk ", "sk ", "gk ", "nk "};
int   number=bookType.length;
%>
<body   background= "beijing.gif "> <div   align= "center ">
获取复选框的值
    <form   name= "form "   method= "post "   action= "changes_result.jsp "   onSubmit= "return   checkEmpty(form) ">
        <table   width= "276 ">
            <tr>
                <td   width= "266 "> 选择渠道 </td>
            </tr>
            <%
            for(int   i=0;i <bookType.length;i++){
            %>
            <tr>
                <td> <input   type= "checkbox "   name= "name <%=i%> "   value= " <%=bookType[i]%> ">
                <%=bookType[i]%> </td>
            </tr>
<%}%>

        </table>
          <input   type= "hidden "   name= "number "   value= " <%=bookType.length%> ">
        <input   type= "submit "   name= "Submit "   value= "提交 ">

查询得到结果   change_result.jsp   的关键代码:


<%
request.setCharacterEncoding( "gb2312 ");
int   number=Integer.parseInt(request.getParameter( "number "));
%>


<%
for(int   i=0;i <number;i++){
    String   name= "name "+i;
    if(request.getParameter(name)!=null){
%>
            <tr>
                <td   width= "226 "> <div   align= "center <%=request.getParameter(name)%> </div> </td>
            </tr>
  <%}}%>

可以看到直接使用 <%=request.getParameter(name)%>   就可以得到复选框里的值
但是,如果直接使用下面的,就是无法获得name   的值啊

            <%   }}   catch(Exception   ex)   {}%>
        <%

  try{
  String   sql= "select   *   from   serv6   where   cust_gp   in   ( ' "+request.getParameter( "name ")+ " ')   ";
          ResultSet   rs=connection.executeQuery(sql);
                                  while(rs.next()){
          %>

所以,现在问题是,上面这段代码,该如何改,使得其可以得到name的值得呢?
哪个大大知道的   ,40分送上!


[解决办法]
.
.
<tr>
<td width= "226 ">
<div align= "center ">


String sql= "select * from serv6 where cust_gp in <%=request.getParameter(name)%> ;
</div>
</td>
</tr>
.
.

[解决办法]
for循环里面的
<td> <input type= "checkbox " name= "name <%=i%> " value= " <%=bookType[i]%> ">
改成
<td> <input type= "checkbox " name= "channel " value= " <%=bookType[i]%> ">
对于多个复选框,可以用一个名字,这样你接受到的会是一个数组,存的是被钩上的checkbox 的value
在接受页面String[] chanel = request.getParameterValues( "channel ");
循环就ok了

[解决办法]
request.getParameter( "name ")只能取得一个复选框的值
如果要取多个值,就如dragonsdg3(什么什么java)说的一样了,
那要用request.getParameterValues( "name "),name为你的复选框的名字,并且你的所有复选框的名字都要是的一样的。
request.getParameterValues( "name ")反回的是一个字符串数组,使用时要这样:
String[] params = request.getParameterValues( "name ");

但是在sql 语句 select ... in ()中,括号中的字符串却是要用 , 来隔开的,所以还要转换。
比如:
------------------
/**
*将一个字符串数组以 ", "分开
*/
public static String splitID(String id[]){

StringBuffer str = new StringBuffer();

for(int i=0;i <id.length;i++){

if(i> 0)

str.append( ", ");

str.append(id[i]);
}

return str.toString();

}
-------------------
所以你在sql语句中直接就这样用就可以了:
String sql= "select * from serv6 where cust_gp in ( "+splitID(params)+ ") ";
你自己试试吧,不知道讲得对不对

[解决办法]
String sql= "select * from serv6 where cust_gp in ( ' "+request.getParameter( "name ")+ " ') ";
这句话有错,应该是:
String sql= "select * from serv6 where cust_gp in ( ' "+request.getParameter(name)+ " ') ";
看出不同了吗?
request中只有叫 "name0 " "name1 "的一堆参数,没有叫 "name "的,name只是你在result页面定义的一个变量,怎么能加双引号呢?

热点排行