0

次の「form.jsp」プログラムがあります。ドロップダウンリストを生成します。リストの下には、選択したアイテムのdisplay_nameを表示するテキストエリアがあります。ユーザーがアイテムを選択すると、選択したアイテムIDがテキストエリアに表示されます。私のコードから DB を呼び出し、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> 

詳細については、添付の画像を参照してください。DB では、製品テーブルに製品 ID と display_name があります。ID はわかっています。Java を使用して display_name を取得し、それを jsp にプラグインする方法は?

ここに画像の説明を入力

ここに画像の説明を入力

4

2 に答える 2

0

はい、DBと対話するためにajaxとおそらくサーブレットを使用します。

于 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>

DB からデータを取得するためのサーバー側の 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.");
}
%>
于 2012-09-25T13:29:25.293 に答える