Как получить значение из текстового поля, которое находится внутри ячейки данных таблицы в jsp / servlet? - PullRequest
1 голос
/ 26 февраля 2020

Привет. Я пытаюсь получить значение из текстовых полей внутри моего элемента в моей таблице. У меня есть кнопка редактирования для каждой строки, которая должна go сервлету, обновить поля, обновить sh данные таблицы и вернуться на ту же страницу jsp.

Вот моя таблица

<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>

В моем сервлете я пытаюсь получить значения из этих текстовых полей, чтобы добавить их в класс состояний и обновить базу данных. Я использую request.getParameter (), но получаю нулевое значение

Вот мой сервлет

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;
    }

1 Ответ

1 голос
/ 26 февраля 2020

С вашим кодом есть две проблемы:

A. Форма должна содержать поля, editStateId, editShortDesc, editLongDesc et c. следующим образом:

<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. В вашем сервлете вы должны написать request.getParameter("editIsActiveString") вместо request.getParameter("editIsActive")

...