To make the question clear I make an example:
consider
theSubscriber
form defined bellow infirst.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>
consider the following action class for the 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; } }
The question is: I know that defining all the form fields as action class properties let the class fill them correctly. But I want to make it fill the relevant fields in another class which contains all necessary properties. The user/subscriber class is like this:
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; }
I have defined all accessor methods.
In fact the problem is that it looks very annoying and redundant to define all these fields for the nextAction
class and then evaluate the instance of user in that class.
How should I solve this problem?