0

データベース内のユーザーを表示するビューサーブレットがあります。各行のユーザーを表示するテーブルには、この行のセルをテキストボックスに変更するためのボタンがあります。

私が直面している問題は、データを取得してforループを作成し、各行内のテーブルを表示するときに、更新ボタンを印刷してJavascript関数にアタッチしていることです。この動的行のIDを渡すための重要なポイントは、コードを実行しても何も起こりません。これは、問題があることを示しています。

これは、ビューサーブレットのコードです。

@SuppressWarnings("serial")

public class View extends HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws IOException {
    resp.setContentType("text/html");

    PrintWriter out = resp.getWriter();
    out.println("<html> <head>");
    out.println("<script type='text/javascript'>");
    

    out.println("function show_textBOX(i){");
    out.println("alert(\"update  these users -- \"+i+ \" -- \")");
    out.println(" document.getElementById(i).innerHTML ='f';");
    out.println("}");

    out.println("</script>");
    out.println(" </head> <body>");
    

    PersistenceManager pm = PMF.get().getPersistenceManager();
    Query query = pm.newQuery("select from " + User.class.getName());

    List<User> list = (List<User>) query.execute();

    resp.getWriter().println("<form method='' action='' name='formMY'>");

    resp.getWriter()
            .println(
                    " <table border = '1'> <caption><h4>all users </h4></caption> ");
    resp.getWriter()
            .println(
                    "</br> <h2> <tr> "
                            + "<td> "
                            + " USERname "

                            + "</td> <td> Salary  "
                            + " </td> <td>BirthDate "
                            + " </td> <td> Modification1 </td> <td> Modification2 </td> </tr></h2>");
    int i = 1;
    for (User obj : list) {
        DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");

        String today = formatter.format(obj.getDate());

        resp.getWriter()
                .println(
                        "</br> <tr id='"
                                + i
                                + "'> <td>"
                                + obj.getName()
                                + " </td> <td> "
                                + obj.getSalary()
                                + "</td> "
                                + "  <td> "
                                + today
                                + "</td>"
                                + " <td>"
                                + " <input type=button value='Update' onclick()='show_textBOX("
                                + i + ")'>" + " </td> <td>"
                                + " <input type=button value='DELETE' >"
                                + " </td>" + "  </tr>");
        i++;
    }

    resp.getWriter().println("</table> </form>");

    resp.getWriter().println("</body> </html> ");
4

1 に答える 1

0

この単純なJavaScript関数を使用できます

function submitform(obj,action){
    act = document.getElementById("act");
    act.value = action;
    obj.submit();
    }

そして、あなたはそれを呼び出します

" <td><input type=button value='Update' onclick()='submitform(this.form,"+i+")'></td>"

どれの

this.form

同じフォームを呼び出すと、それを処理するサーブレットにアクション パラメータが渡されます。

req.getParameter("action")

注:JDEVELOPERが機能しないため、テストしませんでした:(

于 2012-04-24T16:54:04.547 に答える