0

我有以下“form.jsp”程序,它会生成一个下拉列表,列表下方是一个文本区域,用于显示所选项目的 display_name,现在当用户选择一个项目时,它会在文本区域中显示所选项目 ID,如何从我的代码中调用数据库并在 javascript 中获取 display_name,以便结果 display_name 将显示在 textarea 中?

<%@ taglib prefix="s" uri="/struts-tags"%>

<script type="text/javascript">
function callme(Display_Name)
{
  alert('callme : Display_Name = '+Display_Name);
  var v=document.getElementById('hiddenValue').value;
  alert('hiddenValue : v = '+v);
  document.getElementById('defaultDisplayName').value=Display_Name;
}
</script>

     <s:hidden id="pricelist.id" name="pricelist.id" value="%{pricelist.id}"/>
     <div class="dialog">
         <table>
             <tbody>
                 <s:if test="%{enableProductList}"> 
                 <tr class="prop">
                     <td valign="top" class="name required"><label for="description">Product:</label></td>
                     <td valign="top">
                         <s:select id="productPrice.product" 
                                   name="productPrice.product"
                                   headerKey="0" 
                                   headerValue="-- Select Product --"
                                   list="products" 
                                   listKey="id" 
                                   listValue="name"
                                   value="productPrice.product.id"
                                   theme="simple"
                                   onchange="callme(value)"
                                   />
                         <s:hidden id="hiddenValue" name="hiddenValue" value="123"/>


                     </td>
                 </tr> 
                 </s:if>
                 <tr class="prop">
                     <td valign="top" class="name"><label for="description">Default Display Name:</label></td>
                     <td valign="top"><s:textarea id="defaultDisplayName" name="defaultDisplayName" theme="simple" readonly="true"/></td>
                 </tr> 

详情见附图,在数据库中,产品表有产品Id和display_name,我知道Id,如何使用Java获取display_name并将其插入jsp?

在此处输入图像描述

在此处输入图像描述

4

2 回答 2

0

是的,使用 ajax 和可能的 servlet 与数据库交互。

于 2012-09-24T15:46:17.077 回答
0

我找到了答案,这是 form.jsp 中的内容:

<script type="text/javascript">
  function getDisplayName(Id)
  {
    var xmlhttp;
    document.getElementById("defaultDisplayName").innerHTML="";
    if (Id=="") return;
    if (window.XMLHttpRequest) xmlhttp=new XMLHttpRequest();                   // code for IE7+, Firefox, Chrome, Opera, Safari
    else xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");                       // code for IE6, IE5
    xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) document.getElementById("defaultDisplayName").innerHTML=xmlhttp.responseText; }
    xmlhttp.open("GET","/pages/productPrice/getDisplayName.jsp?Id="+Id,true);
    xmlhttp.send();
  }
</script>

这是服务器端的 getDisplayName.jsp 中用于从 DB 获取数据的内容:

<%@ page language="java" import="java.sql.*" errorPage="" %>

<%
String Id=request.getParameter("Id");
try
{
  Class.forName("com.mysql.jdbc.Driver");
  Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/abcxyz?autoreconnect=true","username","password");
  Statement st = con.createStatement();
  ResultSet rs=st.executeQuery("select display_name from product where id = "+Id);
  while (!rs.isLast())
  {
    if (rs.next())
    {
      String msg=rs.getString(1);
      out.println(msg);
    }
    else { out.println("No Records Found");}
  }
}
catch(Exception e)
{
  Exception ex = e;
  out.println(e.toString()+"\nDatabase Connection Not Found.");
}
%>
于 2012-09-25T13:29:25.293 回答