【问题标题】:Struts2 Configuration UnderstandingStruts2配置理解
【发布时间】:2010-07-13 11:12:23
【问题描述】:

最近我正在学习一个关于 Struts2 UI 标签的教程。所以,我找到了那个例子并完美地执行了它。

但是,在 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>

这里我从 index.jsp 向 populateRegier 填充一个请求,因此它将它重定向到 RegisterAction.java 并执行我的类的 populate() 方法,即如下:

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

第一个问题:我不明白为什么它在这里执行 populate() 方法?

第二个问题:struts2.xml中method="{1}"是什么意思?

提前谢谢...

【问题讨论】:

  • 请解释清楚

标签: java jakarta-ee struts2 struts-html


【解决方案1】:

这两个问题的答案相同。如果您在 struts 配置中查看这一行:

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

您会注意到 ***** 和 {1}。 struts 正在做的是接受您的 populateRegister 请求并对上述 执行通配符匹配。

它采用通配符匹配部分(填充)并将其用作方法名称(将 {1} 替换为填充)。这就是导致在您的 nirmal.RegisterAction 类中调用 populate() 方法的原因。

如果你想在同一个类中调用 execute() 方法,你可以发送一个 executeRegister 请求。 struts 网站上有更多关于wildcard mappings 的信息。就我个人而言,我发现它们对于保持配置清洁非常有用。

【讨论】:

    【解决方案2】:

    调用填充方法是因为您需要自动填充一些数据,这有助于用户选择或查看它,它也可以帮助您进行默认选择。

    【讨论】:

    • 你能详细说明一下吗?
    猜你喜欢
    • 2014-07-16
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    • 2011-09-17
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    相关资源
    最近更新 更多