※直接取得
在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也可以
沒有留言:
張貼留言