Je fais une sorte d'action appelée ProfileSelector, qui est chargée par un appel ajax (en utilisant la bibliothèque JQuery).Struts2 - Comment puis-je appeler une méthode depuis Action-Bean1 si j'appelle Action-Bean2?
Voici le code:
// BEAN
public class ProfileSelector extends ActionSupport implements ParameterAware {
private String profilePage;
private Map<String, String[]> parameters;
@Override
public String execute() throws Exception {
profilePage=getParameterValue("profilePage");
return profilePage;
}
public String getParameterValue(String param) {
if (getParameters().get(param)==null) return "main";
return ((String[])getParameters().get(param))[0];
}
public Map<String, String[]> getParameters() { return parameters; }
public void setParameters(Map<String, String[]> maps) { this.parameters=maps; }
public String getProfilePage() { return profilePage; }
public void setProfilePage(String profilePage) { this.profilePage=profilePage; }
}
// STRUTS.XML
<action name="profile" class="model.ProfileSelector" >
<result name="main">/profile/profile_main.jsp</result>
<result name="edit">/profile/profile_edit.jsp</result>
<result name="editConfirm">/profile/profile_edit.jsp</result>
<result name="pm">/profile/profile_pm.jsp</result>
<result name="articles">/profile/profile_articles.jsp</result>
</action>
// PAGE.JSP
<c:choose>
<c:when test="${profilePage=='edit'}">
<s:div>
EDIT
<s:url id="edit" action="profile.action"><s:param name="profilePage">editConfirm</s:param></s:url>
<sj:submit href="%{edit}" targets="profileContent" value="Edit" />
</s:div>
</c:when>
<c:when test="${profilePage=='editConfirm'}">
// HERE I NEED TO LOAD A VALUE FROM ANOTHER BEAN-ACTION, not the profile one
</c:when>
</c:choose>
Looks (dans le code) à ICI J'AI BESOIN DE CHARGE D'UNE VALEUR D'UN AUTRE BEAN-ACTION, pas le profil d'un: est ici que je dois charger (par exemple) une méthode d'un autre Bean Action. (Exemple <s:property value="someMethod" />
Comment puis-je faire? Je pense est impossible avec Struts, parce que je peux appeler seulement 1 action au temps. Donc, Interceptors? Je dois changer ma structure de l'application?
Let Cheers
C'est ce que je ne comprends pas sur Struts2: ce n'est pas vraiment un MVC. C'est juste un A (ction) VC ... :) – markzzz
Oui, Struts2 est MVC. Je vous recommande de prendre un bon livre sur Struts2, car vous avez tellement de questions. http://www.manning.com/dbrown/ –
Pour ce que je sais, le MODÈLE existe pour gérer mes données sur le serveur (c'est comme ça que j'ai vu Bean étendu sur JSF, par exemple). Sur struts2 j'ai besoin de gérer mes données manuellement (comme mettre un objet à la session). Il n'y a donc pas de grande différence avec les autres langages procéduraux. Comme PHP. Peut-être que je me trompe :) (je l'espère ..) – markzzz