Чтобы вопрос был понятен, приведу пример:
рассмотрите форму
theSubscriber
, определенную ниже вfirst.jsp
:<s:form id="theSubscriber" name="theSubscriber" method="post" action="next.action"> <s:bean name="my.hibernate.actors.Subscriber" var="user"> <s:hidden name="id" key="id" value="%{user.id}" /> <s:textfield id="subscriberForename" name="forename" key="forename" value="%{user.forename}" label="Forename" /> <s:textfield id="subscriberSurname" name="surname" key="surname" value="%{user.surname}" label="Surname" /> </s:bean> </s:form>
рассмотрите следующий класс действий для next.action
public class NextAction extends ActionSupport { private Subscriber user = new Subscriber(); private String forename; public String getForename() { return forename; } public void setForename(String forename) { this.forename = forename; } public ManageSubscriber() { // TODO Auto-generated constructor stub } public ManageSubscriber(Subscriber user) { this.user = user; } public Subscriber getUser() { return user; } public void setUser(Subscriber user) { this.user = user; } public String execute() { System.out.println(getUser());//This prints out null System.out.println(getForename());//This prints out the posted forename return SUCCESS; } }
Вопрос в следующем: я знаю, что определение всех полей формы как свойств класса действий позволяет классу правильно их заполнить. Но я хочу, чтобы он заполнил соответствующие поля в другом классе, который содержит все необходимые свойства. Класс пользователя/подписчика выглядит следующим образом:
public class User { private long id; private String username; private String password; private UserLevel userLevel; private String forename; private String surname; private String email; private String phoneNumber; private String address; private Date birthday; private Date registrationDate; }
Я определил все методы доступа. На самом деле проблема в том, что определение всех этих полей для класса nextAction
, а затем оценка экземпляра пользователя в этом классе выглядит очень раздражающим и избыточным.
Как мне решить эту проблему?