簡體   English   中英

如何從JSP頁面的表單向Servlet發送數據onclick?

[英]How can I send data onclick from form in jsp page to servlet?

我有一個.jsp頁面,其中顯示了一些來自數據庫的數據(表seria [id,名稱,描述,照片])。 當用戶單擊帶有照片和文字的區域時,如何將ID發送到Servlet? 現在我單擊任何地方,servlet都會得到seria_id = 1。 網站http://joxi.ru/krDLaDYS07pwNr的屏幕截圖我的表格在這里->

<form id="myform" action="/seria" method="post">
    <%Iterator itr;%>
    <% LinkedList<Seria> data = (LinkedList<Seria>) request.getAttribute("data");
    Seria seria;
    for (itr=data.iterator(); itr.hasNext(); ) {
        seria = (Seria) itr.next();
    %>
    <input type="hidden" name="seria_id" value=<%=seria.getId()%>>
    <table onclick="document.getElementById('myform').submit();">
        <tr>
            <td colspan="2">
                <h3 align="center">Серия &laquo;<%=seria.getName()%>&raquo;</h3>
            </td>
        </tr>
        <tr>
            <td width="50%">
                    <img src="/img/<%=seria.getPhoto()%>" width="60%" alt="cars" hspace="20%">
            </td>
            <td>
                <%=seria.getDescription()%>
            </td>
        </tr>
    </table>
    <hr>
    <%}%>
</form>

web.xml中

<servlet>
    <servlet-name>SeriaServlet</servlet-name>
    <servlet-class>mypackage.SeriaServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>SeriaServlet</servlet-name>
    <url-pattern>/seria</url-pattern>
</servlet-mapping>

的servlet

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    Enumeration en=request.getParameterNames();
    while(en.hasMoreElements())
    {
        Object objOri=en.nextElement();
        String param=(String)objOri;
        String value=request.getParameter(param);
        System.out.println("Parameter Name is '"+param+"' and Parameter Value is '"+value+"'");
    }
}

問題出現時,始終在github上打印“ Parameter Name為'seria_id',Parameter Value為'1'”的項目。 https://github.com/sasha361322/jsp-servlet/commit/aaf869ccde54d53e16f964a6db9786c27def8eab

如果您想獲得價值

    getParameter(name);

然后,您應該發送值網址,例如,您的操作網址是/ seria

所以您將值發送為

/seria?parmName1=ParmaValue1&parmName2=ParmaValue2

我得到了解決方案。 現在,我不再為一種形式,而是為每一個系列做一個。

<%Iterator itr;%>
                            <% LinkedList<Seria> data = (LinkedList<Seria>) request.getAttribute("data");
                            Seria seria;
                            for (itr=data.iterator(); itr.hasNext(); ) {
                                seria = (Seria) itr.next();
                            %>
                            <form id="<%=seria.getId()%>" action="/seria" method="post">
                                <input type="hidden" name="seria_id" value=<%=seria.getId()%>>
                                <table onclick="document.getElementById('<%=seria.getId()%>').submit();">
                                    <tr>
                                        <td colspan="2">
                                            <h3 align="center">Серия &laquo;<%=seria.getName()%>&raquo;</h3>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td width="50%">
                                                <img src="/img/<%=seria.getPhoto()%>" width="60%" alt="cars" hspace="20%">
                                        </td>
                                        <td>
                                            <%=seria.getDescription()%>
                                        </td>
                                    </tr>
                                </table>
                            </form>
                            <hr>
                            <%}%>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM