Comment passer d'un objet à partir d'une JSP forme d'une classe d'Action dans Struts2, sans définir tous les champs du formulaire en tant que catégorie de la propriété?
De faire de la question claire, je fais un exemple:
- envisager
theSubscriber
forme définie ci-dessous dansfirst.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>
- envisager les mesures suivantes de la classe pour la prochaine.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; } }
- La question est: je sais que la définition de tous les champs de formulaire que l'action des propriétés de la classe la classe les remplir correctement. Mais je veux le faire remplir les champs pertinents dans une autre classe qui contient toutes les propriétés nécessaires. L'utilisateur/abonné classe est comme ceci:
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; }
J'ai défini toutes les méthodes d'accès.
En fait, le problème, c'est qu'il a l'air très ennuyeux et redondant de définir l'ensemble de ces champs pour l' nextAction
de la classe et d'en évaluer l'instance de l'utilisateur de la classe.
Comment dois-je résoudre ce problème?
OriginalL'auteur Johnny | 2012-12-30
Vous devez vous connecter pour publier un commentaire.
Il est plus facile que vous le pensez.
Vous sont très proches, et vous l'avons déjà fait pour
value
attribut (utilisé pour pré-régler la valeur de l'élément sur la page):maintenant qu'elle
name
attribut (utilisé pour envoyer la valeur de l'Action), comme ceci:(
Key
attribut n'est pas nécessaire ici)Noter que pour que cela fonctionne, vous aurez besoin d'un haricot avec un no-args constructeur (comme vous l'avez).
Éviter initializating vous-même trop.
Changer cela:
à ce
Ottimo, vous êtes les bienvenus 🙂
OriginalL'auteur Andrea Ligios
Je pense que vous vous demandez comment vous pouvez conserver en mémoire un objet Utilisateur qui sera utilisé à travers de multiples actions.
Vous avez quelques options, si je comprends votre question correctement.
Une option qui n'est pas très Struts comme, serait d'ajouter l'Utilisateur de l'objet à une variable de session. Vous pouvez accéder à la variable de session comme décrit ici.
Une autre option, que je recommande si vous prévoyez sur le maintien de l'objet dans votre session pour un ensemble spécifique d'actions (ou d'étapes, comme un "assistant" partie de votre application) est la ScopeInterceptor. Vous pouvez lire à ce sujet ici et ici.
Espère que ça aide.
OriginalL'auteur Michael Freake