2012-09-24 100 views
0

我有下面的「form.jsp」程序,它生成一個下拉列表,下面的列表是一個textarea,用於顯示所選項目的display_name,現在當用戶選擇一個項目時,它會顯示選中的項目ID textarea,如何從我的代碼中調用數據庫,並在javascript中獲取display_name,以便結果display_name將顯示在textarea中?如何從Javascript調用Java代碼併爲JSP頁面賦值?

<%@ 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?

enter image description here

enter image description here

+1

什麼關於'jQuery.ajax()'? – adatapost

回答

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在服務器端從數據庫獲取數據:

<%@ 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."); 
} 
%> 
0

是的,使用了Ajax也許一個servlet與數據庫進行交互。