我有一个输入字段,用户在其中输入ID。现在我想要的是,产品名称将显示在旧版本旁边的单独输入字段中。
<input type="text" name="productName" id="productName" disabled>
我的JavaScript测试:
<script type="text/javascript">
function setProductName() {
<%
int a = Integer.valueOf(request.getParameter("pName"));
String test = Projektarbeit.getProductName(a);
document.getElementById('productName').value = <%=test%>;
}
</script>
最后但并非最不重要的是我的方法,它获取了产品名称,这个方法是在一个单独的Java类中!
public static String getProductName(int ID) {
String x = "";
try {
stmt = DBTools.getConnection().createStatement();
rs = stmt.executeQuery("SELECT NAME FROM PRODUCT WHERE ID = ' " + ID + "';");
while (rs.next()) {
x = rs.getString("Name");
}
rs.close();
stmt.close();
} catch (SQLException e) {
System.err.println("Error: " + e);
}
return x;
}
答案 0 :(得分:0)
这可能无法解决您的所有问题,但是由于未正确打开和关闭scriptlet标记,您尝试将JSP scriptlet中的值打印到Javascript中失败了。此外,您需要在test
变量的打印周围包含引号,因为它是一个字符串(否则您最终会在生成的Javascript中出现语法错误):
<script type="text/javascript">
function setProductName()
{
<%
int a = Integer.valueOf(request.getParameter("pName"));
String test = Projektarbeit.getProductName(a);
%>
document.getElementById('productName').value = "<%=test%>";
}
</script>
当然,实际上,您需要了解有关此方法的更多信息。当您调用Javascript函数setProductName()
时,它不会重新执行此JSP代码。此JSP代码将在页面调用时执行一次,然后在该页面的Javascript中打印test
的硬编码值。对Javascript函数setProductName()
的每次后续调用仅将元素的值设置为硬编码的test
值(直到页面刷新获取不同的值)。如果希望每次调用setProductName()
执行服务器端代码并检索新值,则需要学习Ajax。但由于这是基于request.getParameter("pName")
的数值,这可能不是一个问题。