【问题标题】:Java Servlet put contents into input field in HTML after Servlet finished running [duplicate]Servlet完成运行后,Java Servlet将内容放入HTML的输入字段中[重复]
【发布时间】:2017-03-25 18:53:02
【问题描述】:

所以基本上我已经从数据库中检索了数据,并将我需要的值存储在一个数组中。但我无法在 HTML 输入字段中设置值。我有三个字段威尔士名、英文名和性别。所以我需要表单中的威尔士语输入字段来保存威尔士语等。我该怎么做?

HTML 代码;

<html>
<head>
    <title>Academi Gymraeg</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <h1>Academi Gymraeg</h1>
    <h2>Modify Vocabulary</h2>
    <div class="login-form">
        <div class="login-elements">
            <br>
            <form action="instructorServlet" name="searchVocab" method="post">
                <input type="hidden" name="type" value="searchVocab" />
                Word:
                <input type="text" name="word" class="inputBox" required><br><br>
                Language:<br>
                <select name="language" class="dropDown">
                    <option value="English" selected>English</option>
                    <option value="Welsh">Welsh</option>
                </select><br><br>
                <button type="submit" class="button" name="search" value="search"
                        >Search</button><br><br>
            </form>
            <form action="instructorServlet" name="modifyVocab" method="get">   
                <input type="hidden" name="type" value="modifyVocab" />
                Welsh Name:
                <input type="text" name="welshName" class="inputBox" required><br><br>
                English Name:
                <input type="text" name="englishName" class="inputBox" required><br><br>
                Gender:<br>
                <select name="gender" class="dropDown">
                    <option value="Masculine" selected>Masculine</option>
                    <option value="Feminine">Feminine</option>
                </select><br><br>
                <button type="submit" class="subButton" name="modifyEntry" value="Modify Entry"
                        >Modify Entry</button>
                <button type="reset" class="subButton" name="modifyEntry" value="Modify Entry"
                        >Reset</button>
            </form><br>
            <form action="instructorServlet" name="backToMenu" method="post">
                <input type="hidden" name="type" value="backToMenu" />
                <button type="submit" class="button" name ="backToMenu" value="backToMenu"
                        >Back To Menu</button>
            </form>
        </div>
    </div>
</body>

servlet 代码

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    String form = request.getParameter("type");
 if ("searchVocab".equals(form)) {
        String searchFor = request.getParameter("search");

        if (searchFor != null) {
            String word = request.getParameter("word");
            String language = request.getParameter("language");
            String values[] = database.searchFor(word, language);
            response.getOutputStream().println("<script> window.location = \"modify-vocab.html\";</script>");
            response.getOutputStream().println("<script> document.getElementById(\"welshName\").value = " + values[0] + ";\n"
                    + "    document.getElementById(\"englishName\").value = " + values[1] + ";\n"
                    + "    document.getElementById(\"gender\").value = " + values[2] + "; </script>");
        }
    }

表单会重新加载,但是,值不会放入输入字段中,它们只是加载空白。

【问题讨论】:

    标签: java html servlets


    【解决方案1】:

    您的 servlet 应该构建您需要的值并将它们转发到 JSP 视图。

    @Override
    protected void doPost(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException {
       // ... code to build your values
    
       // Set the values
       request.setAttribute("welshName", welshName);
       request.setAttribute("englishName", englishName);
       request.setAttribute("gender", gender);
    
       // Ask the view to take care of the values
       request.getRequestDispatcher("view.jsp").forward(request, response);
    }
    

    你的看法。

     <%
    
     final String welshName = (String) request.getAttribute("welshName");
     final String englishName = (String) request.getAttribute("englishName");
     final String gender = (String) request.getAttribute("gender");
    
     %>
    
     Welsh Name: <input type="text" name="welshName" class="inputBox" value="<% out.print(welshName); %>"/>
     English Name: <input type="text" name="englishName" class="inputBox" value="<% out.print(englishName); %>"/>
    
     Gender:
     <select name="gender" class="dropDown">
         <option value="Masculine" <% out.print("masculine".equals(gender) ? "selected" : ""); %>>Masculine</option>
         <option value="Feminine" <% out.print("feminine".equals(gender) ? "selected" : ""); %>>Feminine</option>
     </select>
    

    【讨论】:

    • 感谢您的帮助。 =)
    猜你喜欢
    • 2011-07-21
    • 2021-07-24
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    • 2012-11-17
    • 2012-05-02
    • 2022-11-30
    • 1970-01-01
    相关资源
    最近更新 更多