※直接取得
在LoginAction.java增加以下程式碼測試private String message;
public String getMessage() {
return message;
}
@Override
public String execute() throws Exception {
HttpServletRequest request = ServletActionContext.getRequest() ;
this.message = "顯示";
request.setAttribute("test", "test");
return SUCCESS;
}
login.jsp
<s:property value="message"/>
${message}
<s:property value="test"/>
${test}
<s:property value="#request.test"/>
※s標籤必須在Action裡定義field才能取得到; 而EL都可以,不過聽說較早版本取不到field
※如果s標籤要取內置對象屬性,可以用#,因為它是用OGNL,而OGNL的語法就是#開頭
※如message是field,而test不是,所以第三行印不出來,必須改成第五行才可以
※在collections裡取得
LoginAction.javapublic String execute() throws Exception {
HttpServletRequest request = ServletActionContext.getRequest() ;
List<User> list = new ArrayList<User>() ;
for (int i = 0 ; i < 3 ; i ++) {
User user = new User() ;
user.setUserName("name" + i);
user.setUserPassword("password" + i);
list.add(user) ;
}
request.setAttribute("users", list);
return SUCCESS;
}
login.jsp
<ul>
<s:if test="#request.users != null">
<s:iterator value="#request.users">
<li><s:property value="userName"/>
<li><s:property value="userPassword"/>
<li>${userName}
<li>${userPassword}
</s:iterator>
</s:if>
</ul>
※在迴圈裡,s標籤就不用#開頭了,而且用EL也可以
沒有留言:
張貼留言