Стоящий вопрос; используя то же действие для отображения и отправки - PullRequest
0 голосов
/ 01 ноября 2010

вот ситуация.

У меня есть страница с именем param.jsp, на ней есть только форма и кнопка отправки. В базе данных есть одна запись, когда отображается форма, я хочу заполнить форму этой записью. Когда форма будет отправлена, я хочу обновить эту запись и вернуться на ту же страницу. Каков наилучший способ сделать это в стойках?

Пока я придумал это; вот действие:

class MyAction extends DispatchAction{
    public ActionForward savePlatinumJLParam(......){
         //<insert the form to the database>
         return mapping.findForward("<return to the same page>");
    }
    public ActionForward initPlatinumJLParam(......){
         //<load the form from the database>
         //form.setXX(...);
         return mapping.findForward("<return to the same page>");
    }
}

Сохранение работает отлично, но у меня проблемы с заполнением формы. Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 01 ноября 2010

Если вы объявили подобное действие в struts-config.xml (предположим, что name = "submitForm" уже объявлено):

<form-beans>
    <form-bean name="submitForm" type="hansen.playground.SubmitForm"/>
</form-beans>

<action   path="/submit"
              type="hansen.playground.SubmitAction"
              name="submitForm"
              input="/submit.jsp"
              scope="request">
</action>

И ваша форма будет такой:

package hansen.playground;
public class SubmitForm extends ActionForm {
    private String name;
    private String contactEmail;

    //Getters and setters are here....

}

Затем вы можете сделать это на вашем Struts DispatchAction (в моем случае, SubmitAction):

package hansen.playground;
public class SubmitAction extends DispatchAction{
    public ActionForward request(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){
        //<insert the form to the database>
        ((SubmitForm)form).setName("The Elite Gentleman");
        ((SubmitForm)form).setContactEmail("someone@somewhere.com");

        return mapping.findForward("<return to the same page>");
    }
}

Поскольку ваша ActionForm сопоставлена ​​с вашим действием Struts, Struts отправляет SubmitForm до ActionForm form при вызове метода request.Изменяя name на теге <action> на другую ActionForm, Struts отправит эту форму по запросу.

Надеюсь, это поможет ...


EDIT При выводе вы должны отобразить свой результат из submitForm следующим образом:

<html:text name="submitForm" property="name" />

(обратите внимание, что атрибут name соответствует имени формы Struts).

0 голосов
/ 01 ноября 2010

Когда вы визуализируете JSP, вам нужен доступ к переменной из вашего bean-компонента, чтобы установить значение элементов формы.

Может выглядеть примерно так,

<input type="text" name="username" value="<%= someBean.getSomeField() >"/>

Подробнее здесь, http://struts.apache.org/1.x/userGuide/building_view.html

Я знаю, что это не ваш вопрос, но я бы не рекомендовал использовать тот жедействие для сохранения и отображения.У меня будет одно действие для сохранения данных и другое действие для отображения.Затем, когда вы отправляете данные в действие сохранения, перенаправляете в действие отображения. Это вопрос о перенаправлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...