如何从 jsp/servlet 中 table 数据单元格内的文本框获取值?

How do I get a value from a textbox that is inside of a table data cell in jsp/servlet?

您好,我正在尝试从 table 元素内的文本框中获取值。我为应该转到 servlet 的每一行都有一个编辑按钮,更新字段,刷新 table 数据并返回相同的 jsp 页面。

这是我的 table

<table border="2">
                <tr>
                    <th>ID</th>
                    <th>Short Desc</th>
                    <th>Long Desc</th>
                    <th>Status</th>

                </tr>
                <c:forEach var="state" items="${stateList}">
                <tr>
                    <td><input type="text" name="editStateId" value="${state.stateId}"/></td>
                    <td><input type="text" name="editShortDesc" value="${state.shortDesc}"/></td>
                    <td><input type="text" name="editLongDesc" value="${state.longDesc}"/></td>
                    <td><input type="text" name="editIsActiveString" value="${state.isActiveString}"/></td>

                    <td>
                    <form action="witc" method="post">
                        <input type="hidden" name="action" value="manageDispoType">
                        <input type="hidden" name="stateId" value="${state.stateId}"/>
                        <input type="hidden" name="manageType" value="stateType">
                            <input type="submit" value="Edit" class="editbuttons"/>
                        </form>    
                    </td>
                </tr>

                </c:forEach>

            </table>

在我的 servlet 中,我试图从这些文本框中获取值以添加到状态 class 并更新数据库。我正在使用 request.getParameter() 但我得到一个空值

这是我的 servlet

private String doManageType(HttpServletRequest request, HttpServletResponse response){
        String urlString;
        StateType stateType = new StateType();
        List<StateType> stateList = GetDb.getAllStates();

        //below is the code I'm having trouble with
        String shortDesc = request.getParameter("editShortDesc");
        String longDesc = request.getParameter("editLongDesc");
        String isActive = request.getParameter("editIsActive");

            request.setAttribute("stateList", stateList);

            stateType.setShortDesc(shortDesc);
            stateType.setLongDesc(longDesc);
            stateType.setIsActiveString(isActive);


            UpdateDb.updateState(stateType);
            urlString = "/manageTypes.jsp";       

        return urlString;
    }

您的代码有两个问题:

A. 表单应包含字段 editStateIdeditShortDesceditLongDesc 等,如下所示:

<table border="2">
    <tr>
        <th>ID</th>
        <th>Short Desc</th>
        <th>Long Desc</th>
        <th>Status</th>
    </tr>
    <c:forEach var="state" items="${stateList}">
        <form action="witc" method="post">
            <tr>
                <td><input type="text" name="editStateId" value="${state.stateId}"/></td>
                <td><input type="text" name="editShortDesc" value="${state.shortDesc}"/></td>
                <td><input type="text" name="editLongDesc" value="${state.longDesc}"/></td>
                <td><input type="text" name="editIsActiveString" value="${state.isActiveString}"/></td>
                <td>                
                    <input type="hidden" name="action" value="manageDispoType">
                    <input type="hidden" name="stateId" value="${state.stateId}"/>
                    <input type="hidden" name="manageType" value="stateType">
                    <input type="submit" value="Edit" class="editbuttons"/>                   
                </td>
            </tr>
        </form>  
    </c:forEach>
</table>

B. 在你的servlet中,你应该写request.getParameter("editIsActiveString")而不是request.getParameter("editIsActive")