<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Junky's IT Notebook

    統(tǒng)計

    留言簿(8)

    積分與排名

    WebSphere Studio

    閱讀排行榜

    評論排行榜

    WebWork2教程(中文版)(4.1.1)

    4.1.1、WebWork UI標記

    1)創(chuàng)建表單

    WebWork UI標記和HTML標記很相似,很容易從它的名字辨認出。你可以直接使用這些標記創(chuàng)建表單,和HTML標記的區(qū)別在于:參數(shù)使用雙引號和單引號括起,這是因為要和Value Stack中的名字區(qū)分??聪旅娴睦樱?/span>

    ex01-index.jsp

    <%@ taglib uri="webwork" prefix="ww" %>
    <html>
    <head>
    <title>WebWork Tutorial - Lesson 4.1.1 - Example 1</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <style type="text/css">
           .errorMessage { color: red; }
    </style>
    </head>
    <body>
    <p>UI Form Tags Example:</p>
    <ww:form action="'formProcessing.action'" method="'post'">
           <ww:checkbox name="'checkbox'" label="'A checkbox'" fieldValue="'checkbox_value'" />
           <ww:file name="'file'" label="'A file field'" />
           <ww:hidden name="'hidden'" value="'hidden_value'" />
           <ww:label label="'A label'" />
           <ww:password name="'password'" label="'A password field'" />
           <ww:radio name="'radio'" label="'Radio buttons'" list="{'One', 'Two', 'Three'}" />
           <ww:select name="'select'" label="'A select list'" list="{'One', 'Two', 'Three'}" 
                  emptyOption="true" />
           <ww:textarea name="'textarea'" label="'A text area'" rows="'3'" cols="'40'" />
           <ww:textfield name="'textfield'" label="'A text field'" />
           <ww:submit value="'Send Form'" />
    </ww:form>
    </body>
    </html>

    經(jīng)WebWork處理后的HTML結(jié)果如下:

    <html> 
    <head> 
    <title>WebWork Tutorial - Lesson 4.1.1 - Example 1</title>
    <style type="text/css"> 
      .errorMessage { color: red; } 
    </style>   
    </head> 
    <body> 
    <p>UI Form Tags Example:</p> 
    <table> 
    <form action="formProcessing.action" method="post" > 
    <tr><td valign="top" colspan="2"> 
    <table width="100%" border="0" cellpadding="0" cellspacing="0"> 
    <tr><td valign="top"> 
    <input type="checkbox" name="checkbox" value="checkbox_value" /> 
    </td> 
    <td width="100%" valign="top"> 
    <span class="checkboxLabel"> 
    A checkbox 
    </span> 
    </td></tr> 
    </table> 
    </td></tr> 
    <tr><td align="right" valign="top"> 
    <span class="label"> 
    A file field: 
    </span> 
    </td> 
    <td> 
    <input type="file" name="file" /> 
    </td></tr> 
        <input type="hidden" name="hidden" value="hidden_value" /> 
    <tr><td align="right" valign="top"> 
    <span class="label"> 
    A label: 
    </span> 
    </td> 
    <td> 
    <label> </label> 
    </td></tr> 
    <tr><td align="right" valign="top"> 
    <span class="label"> 
    A password field: 
    </span> 
    </td> 
    <td> 
    <input type="password" name="password" /> 
    </td></tr> 
    <tr><td align="right" valign="top"> 
    <span class="label"> 
    Radio buttons: 
    </span> 
    </td>
    <td> 
    <input type="radio" name="radio" id="radioOne" value="One" /> 
    <label for="radioOne">One</label> 
    <input type="radio" name="radio" id="radioTwo" value="Two" /> 
    <label for="radioTwo">Two</label> 
    <input type="radio" name="radio" id="radioThree" value="Three" /> 
    <label for="radioThree">Three</label> 
    </td></tr> 
    <tr><td align="right" valign="top"> 
    <span class="label"> 
    A select list: 
    </span> 
    </td> 
    <td> 
    <select name="select"> 
    <option value=""></option> 
    <option value="One">One</option> 
    <option value="Two">Two</option> 
    <option value="Three">Three</option> 
    </select> 
    </td></tr> 
    <tr><td align="right" valign="top"> 
    <span class="label"> 
    A text area: 
    </span> 
    </td> 
    <td> 
    <textarea name="textarea" cols="40" rows="3" ></textarea> 
    </td></tr> 
    <tr><td align="right" valign="top"> 
    <span class="label"> 
    A text field: 
    </span> 
    </td> 
    <td> 
    <input type="text" name="textfield" /> 
    </td></tr> 
      <tr><td colspan="2">
    <div align="right" ><input type="submit" value="Send Form" /></div> 
    </td></tr> 
    </form> 
    </table> 
    </body> 
    </html>

    xwork.xml

    <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" 
    "http://www.opensymphony.com/xwork/xwork-1.0.dtd">
    <xwork>
           <!-- Include webwork defaults (from WebWork-2.1 JAR). -->
           <include file="webwork-default.xml" />
           <!-- Configuration for the default package. -->
           <package name="default" extends="webwork-default">
                  <action name="formProcessing" class="lesson04_01_01.FormProcessingAction">
                    <result name="input" type="dispatcher">ex01-index.jsp</result>
                    <result name="success" type="dispatcher">ex01-success.jsp</result>
                    <interceptor-ref name="validationWorkflowStack" />
                  </action>
           </package>
    </xwork>

    FormProcessingAction.java

    package lesson04_01_01;
     
    import com.opensymphony.xwork.ActionSupport;
     
    public class FormProcessingAction extends ActionSupport {
           private String checkbox;
           private String file;
           private String hidden;
           private String password;
           private String radio;
           private String select;
           private String textarea;
           private String textfield;
           
           public String getCheckbox() { return checkbox; }
           public String getFile() { return file; }
           public String getHidden() { return hidden; }
           public String getPassword() { return password; }
           public String getRadio() { return radio; }
           public String getSelect() { return select; }
           public String getTextarea() { return textarea; }
           public String getTextfield() { return textfield; }
           
           public void setCheckbox(String checkbox) { this.checkbox = checkbox; }
           public void setFile(String file) { this.file = file; }
           public void setHidden(String hidden) { this.hidden = hidden; }
           public void setPassword(String password) { this.password = password; }
           public void setRadio(String radio) { this.radio = radio; }
           public void setSelect(String select) { this.select = select; }
           public void setTextarea(String textarea) { this.textarea = textarea; }
           public void setTextfield(String textfield) { this.textfield = textfield; }
           
           public String execute() throws Exception {
                  return SUCCESS;
           }
    }

    FormProcessingAction-validation.xml

    <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0//EN"
    "http://www.opensymphony.com/xwork/xwork-validator-1.0.dtd">
    <validators>
     <field name="checkbox">
        <field-validator type="requiredstring">
          <message>Please, check the checkbox.</message>
        </field-validator>
     </field>
     <field name="file">
        <field-validator type="requiredstring">
          <message>Please select a file.</message>
        </field-validator>
     </field>
     <field name="password">
        <field-validator type="requiredstring">
          <message>Please type something in the password field.</message>
        </field-validator>
     </field>
     <field name="radio">
        <field-validator type="requiredstring">
          <message>Please select a radio button.</message>
        </field-validator>
     </field>
     <field name="select">
        <field-validator type="requiredstring">
          <message>Please select an option from the list.</message>
        </field-validator>
     </field>
     <field name="textarea">
        <field-validator type="requiredstring">
          <message>Please type something in the text area.</message>
        </field-validator>
     </field>
     <field name="textfield">
        <field-validator type="requiredstring">
          <message>Please type something in the text field.</message>
        </field-validator>
     </field>
    </validators>

    ex01-success.jsp

    <%@ taglib uri="webwork" prefix="ww" %>
    <html>
    <head>
    <title>WebWork Tutorial - Lesson 4.1.1 - Example 1</title>
    </head>
    <body>
    <p>UI Form Tags Example result:</p>
    <ul>
     <li>checkbox: <ww:property value="checkbox" /></li>
     <li>file: <ww:property value="file" /></li>
     <li>hidden: <ww:property value="hidden" /></li>
     <li>password: <ww:property value="password" /></li>
     <li>radio: <ww:property value="radio" /></li>
     <li>select: <ww:property value="select" /></li>
     <li>textarea: <ww:property value="textarea" /></li>
     <li>textfield: <ww:property value="textfield" /></li>
    </ul>
    </body>
    </html>

    Form的缺省布局是表格,左邊是標簽,右邊是表單域。可以使用模板系統(tǒng)創(chuàng)建自己的布局。

    注意Action配置中validationWorkflowStack的引用。這使得WebWork會根據(jù)Action類相同位置上的驗證配置文件(FormProcessingAction-validation.xml),對傳遞給Action的參數(shù)進行驗證。如果有非法參數(shù),WebWork會阻止Action的執(zhí)行,將請求指派的input結(jié)果頁面,將錯誤信息顯示到對應(yīng)的表單域。

    2)模板系統(tǒng)

    WebWork使用Velocity模板系統(tǒng)為所有的UI標記呈現(xiàn)實際的HTML輸出。所有模板的缺省實現(xiàn)包含在webwork-2.1.jar/template/xhtml目錄下。這些模板可以被編輯或替換來定制HTML輸出結(jié)果。

    如果你想使用不同的布局來顯示UI組件,你可以:

    l         編輯或替換/template/xhtml目錄下的文件

    l         編輯webwork.properties文件(要放在/WEB-INF/classes目錄下)的webwork.ui.theme,指向模板位置。

    l         使用標記的themetemplate屬性為單個標記指定模板位置

    下面是使用第三種方法的例子:

    ex02.jsp

    <%@ taglib uri="webwork" prefix="ww" %> 
    <html> 
    <head> 
    <title>WebWork Tutorial - Lesson 4.1.1 - Example 2</title> 
    </head> 
    <body> 
    <p>Template Change Example:</p> 
    <p><ww:checkbox name="'checkbox'" label="'A checkbox'" 
    fieldValue="'checkbox_value'" theme="/files/templates/components" /></p> 
    <p><ww:textfield name="'textfield'" label="'A text field'" 
    template="/files/templates/components/mytextfield.vm" /></p> 
    </body> 
    </html>

    /files/templates/components/checkbox.vm

    <div align="center"> 
           <input type="checkbox" 
                  name="$!webwork.htmlEncode($parameters.name)" 
                  value="$!webwork.htmlEncode($parameters.fieldValue)" 
           #if ($parameters.nameValue) checked="checked" #end 
           #if ($parameters.disabled == true) disabled="disabled" #end 
           #if ($parameters.tabindex) tabindex="$!webwork.htmlEncode($parameters.tabindex)" #end 
           #if ($parameters.onchange) onchange="$!webwork.htmlEncode($parameters.onchange)" #end 
           #if ($parameters.id) id="$!webwork.htmlEncode($parameters.id)" #end 
           /><br /> 
           $!webwork.htmlEncode($parameters.label) 
    </div>

    /files/templates/components/mytextfield.vm

    <div align="center"> 
           <input type="text" 
                  name="$!webwork.htmlEncode($parameters.name)" 
           #if ($parameters.size) size="$!webwork.htmlEncode($parameters.size)" #end 
           #if ($parameters.maxlength) maxlength="$!webwork.htmlEncode($parameters.maxlength)" #end 
           #if ($parameters.nameValue) value="$!webwork.htmlEncode($parameters.nameValue)" #end 
           #if ($parameters.disabled == true) disabled="disabled" #end 
           #if ($parameters.readonly) readonly="readonly" #end 
           #if ($parameters.onkeyup) onkeyup="$!webwork.htmlEncode($parameters.onkeyup)" #end 
           #if ($parameters.tabindex) tabindex="$!webwork.htmlEncode($parameters.tabindex)" #end 
           #if ($parameters.onchange) onchange="$!webwork.htmlEncode($parameters.onchange)" #end 
           #if ($parameters.id) id="$!webwork.htmlEncode($parameters.id)" #end 
           /><br /> 
           $!webwork.htmlEncode($parameters.label) 
    </div>

    ex02.jsp被處理后的HTML輸出結(jié)果:

    <html> 
    <head> 
    <title>WebWork Tutorial - Lesson 4.1.1 - Example 2</title> 
    </head> 
    <body> 
    <p>Template Change Example:</p> 
    <p><div align="center"> 
      <input type="checkbox" 
             name="checkbox" 
             value="checkbox_value" 
                /><br /> 
      A checkbox 
    </div></p> 
    <p><div align="center"> 
      <input type="text" 
                                         name="textfield" 
                        /><br /> 
      A text field 
    </div></p> 
    </body> 
    </html>

    3)創(chuàng)建自定義UI組件

    有時WebWorkUI組件沒法滿足你的需求,你可以創(chuàng)建自定義的組件。你可以使用WebWork推薦的方法創(chuàng)建布局干凈、有錯誤檢查、可重用的自定義組件。

    要創(chuàng)建自定義組件,只要為它創(chuàng)建Velocity模板,使用<ww:component />標記將它放到Web頁面中,使用template屬性指定模板位置。要傳遞參數(shù)給模板,可以在<ww:component />標記中使用<ww:param />標記。下面的例子創(chuàng)建一個自定義的Date域:

    ex03.jsp

    <%@ taglib uri="webwork" prefix="ww" %> 
    <html> 
    <head> 
    <title>WebWork Tutorial - Lesson 4.1.1 - Example 3</title> 
    </head> 
    <body> 
    <p>Custom Component Example:</p> 
    <p> 
    <ww:component template="/files/templates/components/datefield.vm"> 
           <ww:param name="label" value="'Date'" /> 
           <ww:param name="name" value="'mydatefield'" /> 
           <ww:param name="size" value="3" /> 
    </ww:component> 
    </p> 
    </body> 
    </html>

    /files/templates/components/datefield.vm

    #set ($name = $tag.params.get('name')) 
    #set ($size = $tag.params.get('size')) 
    #set ($yearSize = $size * 2) 
     
    $tag.params.get('label'): 
    <input type="text" name="${name}.day" size="$size" /> / 
    <input type="text" name="${name}.month" size="$size" /> / 
    <input type="text" name="${name}.year" size="$yearSize" /> (dd/mm/yyyy)

    ex03.jsp被處理后的HTML輸出結(jié)果:

    <html> 
    <head> 
    <title>WebWork Tutorial - Lesson 4.1.1 - Example 3</title> 
    </head> 
    <body> 
    <p>Custom Component Example:</p> 
    <p> 
    Date: 
    <input type="text" name="mydatefield.day" size="3" /> / 
    <input type="text" name="mydatefield.month" size="3" /> / 
    <input type="text" name="mydatefield.year" size="6" /> (dd/mm/yyyy) 
    </p> 
    </body> 
    </html>

    posted on 2007-06-28 09:40 junky 閱讀(1057) 評論(1)  編輯  收藏 所屬分類: web

    評論

    # re: WebWork2教程(中文版)(4.1.1) 2007-08-30 18:52 發(fā)送代反

    垃圾  回復(fù)  更多評論   

    主站蜘蛛池模板: 亚洲噜噜噜噜噜影院在线播放| 久久成人免费电影| 亚洲精品视频观看| 久久精品国产亚洲5555| 天天摸天天操免费播放小视频| 国产99视频精品免费专区| 黄色免费网址大全| 无码国产精品一区二区免费| 一二三区免费视频| 亚洲欧洲国产精品久久| 在线观看国产情趣免费视频| 最近中文字幕无免费| 国产一精品一AV一免费| fc2成年免费共享视频网站| 国产精品亚洲综合| 亚洲经典千人经典日产| 久久亚洲国产精品| 国产美女精品视频免费观看| 国产福利免费视频 | 亚洲一线产品二线产品| 夜夜亚洲天天久久| 亚洲高清在线视频| 午夜亚洲www湿好大| 国产亚洲精品a在线观看app| 亚洲色中文字幕无码AV| 狠狠色婷婷狠狠狠亚洲综合| 亚洲综合另类小说色区色噜噜| 亚洲精品国产高清不卡在线| 国产黄色免费网站| 免费h片在线观看网址最新| 亚洲毛片免费视频| 2020久久精品国产免费| 亚洲精品免费网站| 久久天天躁狠狠躁夜夜免费观看| 精品国产污污免费网站aⅴ| 久久ww精品w免费人成| 精品香蕉在线观看免费| A级毛片内射免费视频| 亚欧免费无码aⅴ在线观看| 黄色免费网址大全| 久久精品成人免费观看97|