質問を明確にするために、例を示します。
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
実際、問題は、クラスのこれらすべてのフィールドを定義してから、そのクラスのユーザーのインスタンスを評価することは、非常に煩わしく冗長に見えることです。
この問題をどのように解決すればよいですか?