我想这样做:
select的值改变后获取他,并传递给java方法里的变量
获取select值,据我所知,js很容易做到,但是这里我想知道怎么在java方法中调用这个获取的值,或者哪位知道另外的方法,提供点思路,谢谢

解决方案 »

  1.   

    在下拉列表的 onchange事件里写个ajax请求发送给java后台,lz是这个意思?
      

  2.   


    对 这个ajax怎么写呢?
      

  3.   

    如果我没记错的话,直接给select加一个name。
    然后在servlet里面用getParameter("name");就能取到这个select框的值!!
      

  4.   

    这个问题已经解决了:方法是ajax 加servlet首先在展示页面上添加第一级菜单,这个菜单可以直接在初始化界面的时候就从数据库读出来我还是把全部代码贴出来吧下面是jsp代码:<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%><%@ page import="com.jasper.dao.*"%>
    <%@ page import="java.util.*"%>
    <%@ page import="org.springframework.context.*"%>
    <%@page import="org.springframework.context.support.*;"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    <link rel="stylesheet" type="text/css" href="stylesheet.css" />
    <script type="text/javascript" src="js/common.js"></script>
    </head>
    <script type="text/javascript">var xmlHttp;
    function init() {
    try {
    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e) {
    try {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (e) {
    try {
    xmlHttp = new XMLHttpRequest();
    }
    catch (e) {
    }
    }
    }
    }
    function getField(name) { init();
    var url = "getFieldValue?pfield=" + name;
    xmlHttp.open("GET", url, true);
    xmlHttp.onreadystatechange = handleCheckFieldValue;
    xmlHttp.send(null);

    }
    function handleCheckFieldValue() { if (xmlHttp.readyState == 4) {

    if (xmlHttp.status == 200) {

    var root = xmlHttp.responseXML.documentElement;

    var res = root.getElementsByTagName("select");

    var sel = document.getElementById("city");

    if(sel!=null){//如果不为空就置空 
               
                sel.options.length=0; 
              } 

    for (var i = 0; i < res.length; i++) {

    var svalue = res[i].childNodes[0].firstChild.nodeValue;  
    var stext = res[i].childNodes[1].firstChild.nodeValue;
    var option = new Option(stext, svalue);
        
    sel.add(option);

    }
    }
    }
    }
    </script>
    <body>
    <br>
    <br>
    <hr size="1" />
    <div id="addDiv">
    <div id="row1">
    <a onclick='addRow()'>+</a>
    <a onclick='delRow()'>-</a>
    <br>
    <form id="form" name="form" method="post" action="control">
    <table width="600" border="0" align="center" cellpadding="0"
    cellspacing="0">
    <tr>

    <td> <select id="field" style="width: 100px"
    onchange='getField(this.value)'>
    <option value="0" selected="selected">
    --请选择--
    </option>
    <%
    ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
    FieldDAO fielddao = (FieldDAO) ctx.getBean("FieldDAO"); List fieldlist = fielddao.findAll(); Iterator fieldIt = fieldlist.iterator();
    while (fieldIt.hasNext()) { Field field = (Field) fieldIt.next();
    out.println(" <option value='" + field.getName() + "'> " + field.getContent() + " </option> ");
    }
    %>
    </select>
    </td> <td>
    <script type="text/javascript">



    </script>
    <select id="city" name="city" style="width: 100px">
    <option value="0" selected="selected">
    --请选择--
    </option> </select>
    </td>
    <td>
    <input type="submit" value="提交" />
    </td>
    </tr>
    </table>
    </form>
    </div>
    </div>
    </body>
    </html>下面是servlet的:
    package com.jasper.service;import java.io.IOException;
    import java.io.PrintWriter;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;public class getFieldValue extends HttpServlet { @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
    // TODO Auto-generated method stub
    res.setContentType("text/xml;charset=gb2312");
    res.setHeader("Cache-Control", "no-cache"); String str = req.getParameter("pfield");
    Connection conn = null;
    Statement state = null;
    ResultSet rs = null;
    String url = null;
    String className = null; url = "jdbc:mysql://localhost:3306/ireport";
    className = "com.mysql.jdbc.Driver";
    String xml_start = "<selects>";
    String xml_end = "</selects>";
    String xml = ""; xml = "<select><value>0</value><text>--请选择--</text></select>"; try { Class.forName(className); conn = DriverManager.getConnection(url, "root", "root");
    state = conn.createStatement(); rs = state.executeQuery("select " + str + " from assets"); while (rs.next()) { xml += "<select><value>" + rs.getString(1) + "</value><text>" + rs.getString(1) + "</text></select>"; System.out.println(xml);
    } } catch (Exception e) { e.printStackTrace();
    } String last_xml = "<?xml version='1.0' encoding='GB2312'?>" + xml_start + xml + xml_end;
    res.getWriter().write(last_xml); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doGet(request, response);
    }
    }
      

  5.   

    var url = "getFieldValue?pfield=" + name; //转向serlvet,并传递参数
      

  6.   

    select  加个onchange事件就好。
      

  7.   

    增加查询组并不是难事 难的是 他能和第一组一样可以动态显示出菜单(就是查询字段)我试过 增加完 一组查询 第一下拉框可以显示内容的  因为他是页面初始化就完成了 数据的填充 而第二个下拉框就不行了 他的数据是第一个下拉框 联动出来的结果我用了这段代码:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
     <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title> 动态增加行demo </title>
      <script type="text/javascript">
        //增加一行
      function addRow(){
    var rownum=document.getElementsByTagName("div").length;   
       var divHtml="<div id='row"+rownum+"'><select  id='cloum'><option value='author'>作者</option><option value='time'>时间</option><input type='text'  id='textfield'></select> </div>";
       document.getElementById("addDiv").innerHTML+=divHtml;
      }
      //删除一行
      function delRow(){
      
       var index=document.getElementsByTagName("div").length-1;
       if(index>1){
       document.getElementById("row"+index).removeNode(true);
       } 
       
      }
      </script>
     </head> <body>
      <div id="addDiv">
       <div id="row1"><a onclick='addRow()'>+</a> <a onclick='delRow()'>-</a><br>
        
         <select name="cloum" id="cloum">
             <option value="author">作者</option>
             <option value="time">时间</option>
           </select>
         
         <input type='text' name='textfield' id='textfield'>
       </div>
      </div>
     </body>
    </html>