Вопрос

Недавно я прохожу одно руководство по тегам пользовательского интерфейса Struts2.Итак, я нашел этот пример и воплотил его в совершенстве.

Но в файле конфигурации struts.xml я не смог понять некоторые выражения OGNL.Что я пишу здесь:

<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>

Здесь я заполняю один запрос populateRegier из index.jsp, поэтому он перенаправляет его в RegisterAction.java и выполняет метод populate() моего класса, т.е.следующее :

РегистрацияAction.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;
    }
}

Первый вопрос : Я не мог понять, почему здесь выполняется метод populate()?

Второй вопрос: Каково значение method="{1}" в struts2.xml?

Заранее спасибо...

Это было полезно?

Решение

На 2 вопроса один и тот же ответ.Если вы посмотрите на эту строку в конфигурации вашей стойки:

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

Вы заметите ***** и {1}.Что делает Struts, так это забирает ваше заполнитьРегистрация запрос и выполнение сопоставления с подстановочными знаками для вышеуказанного <действия>.

Он принимает часть, соответствующую подстановочным знакам (заполняется), и использует ее в качестве имени метода (заменяет {1} на заполнение).Именно это вызывает вызов метода populate() в вашем классе nirmal.RegisterAction.

Если вы хотите вызвать метод Execute() в том же классе, вы должны отправить запрос ExecuteRegister.Есть дополнительная информация о сопоставления с подстановочными знаками на месте стоек.Лично я считаю, что они очень полезны для поддержания чистоты конфигурации.

Другие советы

Метод Populate вызывается, потому что вам нужно, чтобы некоторые данные были автоматически заполнены, что помогает пользователям выбирать или просматривать их, а также помогает вам в выборе по умолчанию.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top