Struts 2 - настройка статического параметра для класса Action
В некоторых случаях вам может потребоваться назначить некоторые заранее определенные или статические значения параметров для класса Action.
Определен статический параметр для действия
В Struts 2 вы можете настроить его в файлеstruts.xml через тег<param>, например,
struts.xml
pages/welcome.jsp English Chinese France
он присваивает классу действияLocaleAction три предопределенных значения параметра.
Получить статический параметр из Action
Чтобы получить значения статических параметров изstruts.xml, класс Action должен реализовать интерфейсParameterizable. И доступ к нему может быть либо с помощью свойстваMap property, либоJavaBean.
Статические параметры действия контролируютсяstaticParams Interceptor, который включен в стек по умолчанию struts-default.xml.
1. Карта недвижимости
Во время инициализации класса Action, staticParams Interceptor передает ссылку на заранее определенные значения параметров классу Action через методsetParams().
//...
import com.opensymphony.xwork2.config.entities.Parameterizable;
public class LocaleAction implements Parameterizable{
Map params;
//...
public void setParams(Map params) {
this.params = params;
}
}
2. Свойство JavaBean
Во время инициализации класса Action, если вы правильно создали методы getter и setter, перехватчик staticParams установит предварительно определенные значения параметров для каждого свойства JavaBean, которое соответствует элементам «param».
//...
import com.opensymphony.xwork2.config.entities.Parameterizable;
public class LocaleAction implements Parameterizable{
String englishParam;
String chineseParam;
String franceParam;
public String getEnglishParam() {
return englishParam;
}
public void setEnglishParam(String englishParam) {
this.englishParam = englishParam;
}
public String getChineseParam() {
return chineseParam;
}
public void setChineseParam(String chineseParam) {
this.chineseParam = chineseParam;
}
public String getFranceParam() {
return franceParam;
}
public void setFranceParam(String franceParam) {
this.franceParam = franceParam;
}
//...
}