Изменить запись с помощью Struts2 - PullRequest
0 голосов
/ 29 марта 2020

У меня есть таблица со списком шоу, моя идея состоит в том, чтобы иметь кнопку, позволяющую модифицировать каждое шоу:

         ...

         <s:iterator value="%{listShow}" var="show">
            <tr>
                <td><s:property value="showId"></s:property></td>
                <td><s:property value="showName"></s:property></td>
                <td><s:property value="showDate"></s:property></td>
                <td><s:property value="showPrice"></s:property></td>
                 <td><s:form action="goModify">
                        <s:submit value="Modify"></s:submit>
                        <s:hidden name="showId"></s:hidden>
                        <s:hidden name="showName"></s:hidden>
                        <s:hidden name="showDate"></s:hidden>
                        <s:hidden name="showPrice"></s:hidden>
                    </s:form></td>

            </tr>
        </s:iterator>


        ...

Единственное, что делает действие goModify - это перенаправление на модификацию. jsp файл, в котором я хочу внести изменения в данные:

    <s:form action="modifyAction">

        <s:textfield label="ID" name="showId" value="%{showId}"></s:textfield>
        <s:textfield label="Show Name" name="showName" value="%{showName}></s:textfield>
        <s:textfield label="Date" name="showDate" value="%{showDate}></s:textfield>
        <s:textfield label="Price" name="showPrice"value="%{showPrice}></s:textfield>

        <s:submit value="Modificar"></s:submit>

   </s:form>

Проблема в том, что заполненные поля мне не отображаются.

1 Ответ

0 голосов
/ 04 апреля 2020

Вы назначаете имя только скрытым полям, а не значение. Вы можете использовать атрибут key вместо name. Он автоматически сгенерирует HTML с правильными именем и значением.

<s:iterator value="%{listShow}" var="show">
    <tr>
        <td><s:property value="showId" /></td>
        <td><s:property value="showName" /></td>
        <td><s:property value="showDate" /></td>
        <td><s:property value="showPrice" /></td>
        <td>
            <s:form action="goModify">
                <s:submit value="Modify" />
                <s:hidden key="showId" />
                <s:hidden key="showName" />
                <s:hidden key="showDate" />
                <s:hidden key="showPrice" />
            </s:form>
        </td>
    </tr>
</s:iterator>

Если действие goModify не сохраняет параметры в стеке значений (например, сохраняя их в атрибутах), возможно, вам придется изменить JSP для непосредственного доступа к параметрам запроса.

<s:form action="modifyAction">
    <s:textfield label="ID" name="showId" value="%{#parameters.showId}" />
    <s:textfield label="Show Name" name="showName" value="%{#parameters.showName} />
    <s:textfield label="Date" name="showDate" value="%{#parameters.showDate} />
    <s:textfield label="Price" name="showPrice" value="%{#parameters.showPrice} />
    <s:submit value="Modificar"></s:submit>
</s:form>

Однако лучшее решение для второго JSP также будет использовать key вместо name и value. Но тогда вы должны убедиться, что значения находятся в стеке значений.

...