Question

Récemment, je suis en train de suivre un didacticiel pour les balises d'interface utilisateur Struts2.J’ai donc trouvé cet exemple et je l’ai exécuté à la perfection.

Mais, dans le fichier de configuration struts.xml, je ne comprenais pas certaines expressions OGNL.Que j'écris ici :

<struts>
    <package name="default" extends="struts-default">
        <action name="*Register" method="{1}" class="nirmal.RegisterAction">
            <result name="populate">/register.jsp</result>
            <result name="input">/register.jsp</result>
            <result name="success">/success.jsp</result>
        </action>        

    </package>
</struts>

Ici, je remplis une requête sur populateRegier à partir de index.jsp, elle la redirige donc vers RegisterAction.java et exécute la méthode populate() de ma classe, c'est-à-direcomme suit :

RegisterAction.java

package nirmal;

import java.util.ArrayList;

import com.opensymphony.xwork2.ActionSupport;

public class RegisterAction extends ActionSupport {

    private String userName;
    private String password;
    private String gender;
    private String about;
    private String country;
    private ArrayList<Country> countryList;
    private String[] community;
    private ArrayList<String> communityList;
    private Boolean  mailingList;

    public String populate() {

        countryList = new ArrayList<Country>();
        countryList.add(new Country(1, "India"));
        countryList.add(new Country(2, "USA"));
        countryList.add(new Country(3, "France"));

        communityList = new ArrayList<String>();
        communityList.add("Java");
        communityList.add(".Net");
        communityList.add("SOA");

        community = new String[]{"Java",".Net"};
        mailingList = true;

        return "populate";
    }
    public String execute() {
        return SUCCESS;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    public String getAbout() {
        return about;
    }
    public void setAbout(String about) {
        this.about = about;
    }
    public String getCountry() {
        return country;
    }
    public void setCountry(String country) {
        this.country = country;
    }
    public ArrayList<Country> getCountryList() {
        return countryList;
    }
    public void setCountryList(ArrayList<Country> countryList) {
        this.countryList = countryList;
    }
    public String[] getCommunity() {
        return community;
    }
    public void setCommunity(String[] community) {
        this.community = community;
    }
    public ArrayList<String> getCommunityList() {
        return communityList;
    }
    public void setCommunityList(ArrayList<String> communityList) {
        this.communityList = communityList;
    }
    public Boolean getMailingList() {
        return mailingList;
    }
    public void setMailingList(Boolean mailingList) {
        this.mailingList = mailingList;
    }
}

Première question : Je ne comprenais pas pourquoi la méthode populate() est exécutée ici ?

Deuxième question : Quel est le sens de method="{1}" dans struts2.xml ?

Merci d'avance...

Était-ce utile?

La solution

Les 2 questions ont la même réponse.Si vous regardez cette ligne dans votre configuration Struts :

<action name="*Register" method="{1}" class="nirmal.RegisterAction">

Vous remarquerez un ***** et le {1}.Ce que font Struts, c'est prendre votre remplirS'inscrire demande et effectuer une correspondance avec un caractère générique sur l'<action> ci-dessus.

Il prend la partie correspondant au caractère générique (populate) et l'utilise comme nom de méthode (remplace {1} par populate).C'est ce qui provoque l'appel de la méthode populate() dans votre classe nirmal.RegisterAction.

Si vous souhaitez appeler la méthodeexecute() dans la même classe, vous enverrez une requêteexecuteRegister.Il y a plus d'informations sur mappages génériques sur le site des entretoises.Personnellement, je les ai trouvés très utiles pour garder la configuration propre.

Autres conseils

La méthode Populate est appelée car vous avez besoin que certaines données soient automatiquement renseignées, ce qui aide les utilisateurs à les sélectionner ou à les afficher, cela vous aide également dans votre sélection par défaut.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top