Struts2第十一篇【簡單UI標籤、資料回顯】
阿新 • • 發佈:2019-02-16
Struts2UI標籤
Sturts2為了簡化我們的開發,也為我們提供了UI標籤…也就是顯示頁面的標籤…..
但是呢,Struts2是服務端的框架,因此使用頁面的標籤是需要在伺服器端解析然後再被瀏覽器解析,最後才顯示在頁面上的。因此,它的效能是不夠HTML標籤好的…HTML直接就能夠被瀏覽器解析
還有一點是:我們在寫網頁的時候,肯定是需要使用div+css的頁面佈局的。使用Struts2UI標籤也沒法幹了….因此,除了有必要的話,才去使用Struts2UI標籤
簡單使用Struts2UI標籤
<%--我們發現,Struts2UI標籤用起來和HTML是差不多的--%>
<s:form id="form1" name="form1" method="POST" action="#">
<%--輸入框資料,lable就相當於我們以前外邊寫的資料--%>
<s:textfield label="使用者名稱" name="user.username"/>
<%--密碼框--%>
<s:password label="密碼" name="user.password"/>
<%--提交按鈕--%>
<s:submit value="提交" />
</s:form>
當我們檢視原始檔的時候,發現Struts2UI標籤為我們自動加入了很多的標籤
設定主題
上面已經說了,Struts2UI標籤為我們自動加入了很多的標籤,那有的時候,我們不想要,或者換一種風格的話,怎麼辦???
Struts2UI標籤也為我們提供了“主題”這樣的功能…
當我們在表單中設定theme屬性為simple之後…我們發現原始檔Struts2自動為我們新增的標籤全沒了。
如果我們想整個專案都是使用simple為主題的話,我們可以在配置檔案中配置!
<constant name="struts.ui.theme" value="simple"/>
資料回顯
我們對資料回顯也不會陌生,在使用EL表示式的時候就已經用過了資料回顯了….那為啥資料回顯放在Struts2標籤這裡講解呢???因為Struts2也提供了資料回顯的支援,並且,使用資料回顯必須要使用Struts2的標籤…
按照正常思路寫資料回顯
在Struts中按照正常思路寫資料回顯是這樣的:
- 把資料放到request域中儲存,跳轉到對應的JSP頁面…
public String login() {
//把資料儲存到域中
Map<String, Object> request = ActionContext.getContext().getContextMap();
request.put("username", "zhongfucheng");
request.put("password", "123");
return SUCCESS;
}
- JSP頁面使用Struts2標籤,設定value屬性就可以進行資料回顯了
<s:form id="form1" name="form1" method="POST" action="" >
<%--輸入框資料,lable就相當於我們以前外邊寫的資料--%>
<s:textfield label="使用者名稱" name="user.username" value="%{#request.username}"/>
<%--密碼框--%>
<s:password label="密碼" name="user.password"/>
<%--提交按鈕--%>
<s:submit value="提交"/>
</s:form>
- 效果:
Struts2提供的資料回顯
其實,上面的程式碼已經實現了資料回顯,但Struts2提供了一個更巧妙的方法
也就是說,Struts2可以直接在name中就可以實現資料回顯了….要做的是:
- 我們回顯的資料在根元素下的,也就是儲存在CompoundRoot中的資料【儲存在根元素的資料不用使用#號就可以獲取】
因此,我們把想要回顯的資料放在CompoundRoot下
- 直接放在值棧的資料就是根元素資料
//得到值棧物件
ValueStack valueStack = ActionContext.getContext().getValueStack();
valueStack.set("username","zhongfucheng");
- 在JSP就可以直接獲取了
<s:textfield label="使用者名稱" name="username"/>
- 效果: