Struts2屬性驅動封裝(了),需要使用ognl表示式
建立一個Person類
public class Person {private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
建立一個Action public class PersonAction extends ActionSupport{
private Person person;
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
public String login(){
System.out.println(person.getName());
return null;
}
}
配置struts2.xml
<package name="default" namespace="/" extends="struts-default">
<action name="login" class="strtusDemo1.PersonAction" method="login">
<result>/index.jsp</result>
</action>
</package>
</struts>
當jsp頁面name使用ognl表示式的。Bean中的name屬性可以封裝
使用ognl表示式,可以將name封裝到Person中使用普通name屬性,person為空。對於上面action程式碼直接會報空指標
誰來完成的引數封裝?
在default.xml中定義了一個攔截器<interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>
它底層是先呼叫了setPesonr方法對person物件進行初始化,在對每一個屬性進行賦值時,是呼叫getPerson方法獲取
Person物件,在通過Person物件的setXxx方法完成請求引數封裝。