Struts2第十一篇【簡單UI標籤、數據回顯】


Struts2UI標籤

Sturts2爲了簡化咱們的開發,也爲咱們提供了UI標籤…也就是顯示頁面的標籤…..css

可是呢,Struts2是服務端的框架,所以使用頁面的標籤是須要在服務器端解析而後再被瀏覽器解析最後才顯示在頁面上的。所以,它的性能是不夠HTML標籤好的…HTML直接就可以被瀏覽器解析瀏覽器

還有一點是:咱們在寫網頁的時候,確定是須要使用div+css的頁面佈局的使用Struts2UI標籤也無法幹了….所以,除了有必要的話,纔去使用Struts2UI標籤ruby

簡單使用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標籤爲咱們自動加入了不少的標籤,那有的時候,咱們不想要,或者換一種風格的話,怎麼辦???markdown

Struts2UI標籤也爲咱們提供了「主題」這樣的功能框架

當咱們在表單中設置theme屬性爲simple以後…咱們發現源文件Struts2自動爲咱們添加的標籤全沒了。佈局

這裏寫圖片描述

若是咱們想整個項目都是使用simple爲主題的話,咱們能夠在配置文件中配置性能

<constant name="struts.ui.theme" value="simple"/>

數據回顯

咱們對數據回顯也不會陌生,在使用EL表達式的時候就已經用過了數據回顯了….那爲啥數據回顯放在Struts2標籤這裏講解呢???由於Struts2也提供了數據回顯的支持,而且,使用數據回顯必需要使用Struts2的標籤ui

這裏寫圖片描述

按照正常思路寫數據回顯

在Struts中按照正常思路寫數據回顯是這樣的:spa

  • 把數據放到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"/>
  • 效果:

這裏寫圖片描述

相關文章
相關標籤/搜索