2010-07-13 4 views
1

Récemment, je vais suivre un tutoriel pour les balises UI Struts2. Donc, j'ai trouvé cet exemple et l'exécuter avec perfection. Mais, dans le fichier de configuration struts.xml, je ne pouvais pas comprendre certaines expressions OGNL. Que je vous écris ici:Configuration de Struts2 Comprendre

<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 peuplant une demande à la méthode populateRegier de index.jsp, il est donc rediriger vers RegisterAction.java et l'exécution de remplir() de ma classe, soit comme 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 il est la méthode exeucting remplir() ici?

Deuxième question: Quelle est la signification de method="{1}" dans struts2.xml?

Merci d'avance ...

+0

s'il vous plaît donner une explication claire – SMS

Répondre

2

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 {1}. Qu'est-ce que struts est en train de faire votre populateRegister demande et en effectuant un match générique sur l'action < ci-dessus >.

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

Si vous vouliez appeler la méthode execute() dans la même classe, vous enverriez une requête executeRegister. Il y a plus d'informations sur wildcard mappings sur le site Struts. Personnellement, je les ai trouvés très utiles pour garder la config propre.

1

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

+0

Pouvez-vous élaborer sur ce tout? – Tyrsius