我有以下“form.jsp”程序,它会生成一个下拉列表,列表下方是一个textarea来显示所选项目的display_name,现在当用户选择一个项目时,它会显示所选择的项目ID textarea,如何从我的代码调用数据库并在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?
答案 0 :(得分:0)
是的,使用ajax和servlet来与数据库进行交互。
答案 1 :(得分: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.");
}
%>