使用来自java类的字符串设置输入值

Set input value with a String which comes from a java class

本文关键字:字符串 设置 输入 java      更新时间:2023-09-26

我有一个输入字段,用户可以在其中输入ID。现在我想,产品名称将显示在一个单独的输入字段旁边的旧的。

<input type="text" name="productName" id="productName" disabled>

My JavaScript test:

<script type="text/javascript">
function setProductName() {
<%
int a = Integer.valueOf(request.getParameter("pName"));
String test = Projektarbeit.getProductName(a);
    document.getElementById('productName').value = <%=test%>;
}
</script>

最后但并非最不重要的是我的方法,它获得Product Name,这个方法是在一个单独的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;
}

这可能不能解决您的所有问题,但是由于没有正确打开和关闭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代码将在页面调用时执行一次,然后将test的硬编码值打印到该页面的Javascript中。随后对Javascript函数setProductName()的每次调用只会将元素的值设置为硬编码的test值(直到页面刷新获得不同的值)。如果希望每次调用setProductName()来执行服务器端代码并检索一个新值,则需要学习Ajax。但是由于这是基于request.getParameter("pName")的数值,所以这里可能不需要关注。