【问题标题】:How do I pre-fill text fields in a form with info from a database in a .jsp?如何使用 .jsp 中的数据库中的信息预先填写表单中的文本字段?
【发布时间】:2011-07-13 19:06:52
【问题描述】:

我正在尝试创建一个表单来更新 MySQL 数据库中的条目。该表是一个用户表,其中包含与用户相关的各种字段。我需要将此页面用作更新表单,该表单采用通过上一页传递给它的用户名,并使用现有数据预填充文本字段。它是一个使用表示层、传输层和数据层的模型一应用程序。传输层是 User.java,数据层(与数据库交互)是 UserDB.java。

这是代码,除了预填充外,一切正常。

更新:我已经编辑以反映以下答案的更改,我还想注意“UserDB.getUsers()”返回一个 ArrayList。

<%@ page language="java" contentType="text/html; charset=iso-8859-1"
pageEncoding="ISO-8859-1" import="java.util.ArrayList,beans.*,data.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
//get parameters from the request
String userName = request.getParameter("userName");

ArrayList userList = UserDB.getUsers(userName);
    User user = userList.get(0);
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="styles/style.css" type="text/css" />
<title>User Admin</title>

</head>
<body>


<div id="main">
  <h1>Update  User</h1>
  <h3>User Info</h3>
  <hr>
    <div id="content">
    <form action="updateUser.jsp" method="get">
      <p>User Name<br>
        <input type="text" name="userName" size="20" value="<%=userName%>"/>
      </p>
      <p>Password<br>
        <input type="text" name="password" size="20" value="<%=user.getPassword()%>"/>
      </p>
      <p>First Name<br>
        <input type="text" name="firstName" size="20" value="<%=user.getFirstName()%>"/>
      </p>
      <p>Last Name<br>
        <input type="text" name="lastName" size="20" value="<%=user.getLastName()%>"/>
      </p>
      <p>Email Address<br>
       <input type="text" name="email" size="20" value="<%=user.getEmail()%>"/>
      </p>
      <p>
        <input type="submit" value="Commit Update">
      </p>
  </form>
</div>
</div>
</body>
</html>

我知道我对“用户”对象做错了,但我忽略了它。

【问题讨论】:

    标签: java jsp jsp-tags


    【解决方案1】:

    您将用户名作为字符串传递

    <%
    //get parameters from the request
    String userName = request.getParameter("userName");
    
    user = UserDB.getUsers("userName");
    //it should be (with out the quotes
    user = UserDB.getUsers(userName);
    
    %>
    

    【讨论】:

    • 这是一个错误,谢谢!我仍然收到错误:“在 jsp 文件中的第 8 行发生错误:/updateForm.jsp 用户无法解析为变量”有人告诉我我需要定义“用户”,我不确定如何做到这一点。
    • 是的,就像声明一个User类型的变量...你需要说User user = UserDB.getUsers(userName);你还需要在jsp中导入用户类(使用
    • 谢谢,我已经更新了它现在给我。 &lt;% //get parameters from the request String userName = request.getParameter("userName"); User user = UserDB.getUsers(userName); %&gt; 但它仍然无法正常工作。我应该提到 UserDB.getUsers 返回一个 ArrayList,错误是“在 jsp 文件中的第 9 行发生错误:/updateForm.jsp 类型不匹配:无法从 ArrayList 转换为 User”
    • 在这种情况下,在你的 Jsp 中声明一个 ArrayList 类型的变量而不是 User ...ArrayList userList = UserDB.getUsers(userName); 你可以根据需要进一步处理 arraylist。
    • 我已经添加了这个,但我不明白如何使用它。如何从数组中获取我需要的内容到字段中? (请注意,我已更新问题中的代码以反映此更改)
    【解决方案2】:

    “用户名”应该去掉引号。另外,你在哪里声明用户的类型? 即。

    用户用户 = ....getUser..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-19
      • 1970-01-01
      • 2011-03-06
      • 2011-07-24
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多