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

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

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

    爪哇一角

    共同探討STRUTS#HIBERNATE#SPRING#EJB等技術
    posts - 3, comments - 6, trackbacks - 0, articles - 99
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    十一 自定義組件標簽

    Posted on 2009-01-20 14:50 非洲小白臉 閱讀(232) 評論(0)  編輯  收藏 所屬分類: JSF

    完成了UIComponent的定制后,下面就需要自定義一個Tag來與之對應。自定義Tag的目的在于設定UIComponent的屬性,取得Renderer的值等。

    自定義Tag需要繼承UIComponentTag

    package test;

    import javax.faces.application.Application;

    import javax.faces.component.UIComponent;

    import javax.faces.context.FacesContext;

    import javax.faces.el.ValueBinding;

    import javax.faces.webapp.UIComponentTag;

    繼承了UIComponentTag

     
    public class TextWithCmdTag extends UIComponentTag {

        private String size;

        private String value;

    綁定到自定義的Component組件。

     
        public String getComponentType() {

            return "test.TextWithCmd";

        }

    綁定到Renderer。這里沒有設定,因為這個組件沒有用Renderer編解碼,而是Component自己實現的。

     
        public String getRendererType() {

            return null;

        }

        public void setProperties(UIComponent component) {

            super.setProperties(component);

          

            setStringProperty(component, "size", size);

            setStringProperty(component, "value", value);

        }

        private void setStringProperty(UIComponent component,

                           String attrName, String attrValue) {

            if(attrValue == null)

                return;

    設置Tag的值綁定到Component上。這樣,Component取值的時候,如果元件屬性設定值找不到,就會從綁定值中去尋找。

     
            if(isValueReference(attrValue)) {

                FacesContext context =

                             FacesContext.getCurrentInstance();

                Application application =

                             context.getApplication();

                ValueBinding binding =

                       application.createValueBinding(attrValue);

                component.setValueBinding(attrName, binding);

            }

            else {

                component.getAttributes().

                              put(attrName, attrValue);

            }

        }

        public void release() {

            super.release();

            size = null;

            value = null;

        }

        public String getSize() {

            return size;

        }

        public void setSize(String size) {

            this.size = size;

        }

        public String getValue() {

            return value;

        }

        public void setValue(String value) {

            this.value = value;

        }

     }

    ▲綁定到Tag上的Conponent組件用的是faces-config.xml中定義的別名,所以我們隨時可以替換掉對于的Component而不改變Tag代碼。

    自定義Tag需要在Tld中聲明:

    <tag>

         <name>textcmd</name>

         <tag-class>test.TextWithCmdTag</tag-class>

         <body-content>empty</body-content>

         <attribute>

            <name>size</name>

         </attribute>

         <attribute>

            <name>value</name>

            <required>true</required>

         </attribute>

     </tag>

    具體程序參看示例程序。

     

    新建一個JSP和一個綁定好的javaBean,就可以看到運行結果了。

    對這類jspBean的建立,前面已經有很多例子了,這里就不再說了。

    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>

    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>

    <%@ taglib uri="/WEB-INF/textcmd.tld" prefix="oc"%>

    <html>

    <link href="../../styles.css" rel="stylesheet" type="text/css" />

    <head>

    <title></title>

    </head>

    <body>

    <f:view>

           <h:form>

         Input data: <oc:textcmd size="10" value="#{componentTestBean.data}" />

           </h:form>

           <h:outputText value="#{componentTestBean.data}" />

    </f:view>

    </body>

    </html>

    運行地址:http://localhost:8080/jsfTest/pages/componentTest.faces

    具體程序參看示例程序。

     

    主站蜘蛛池模板: 在线亚洲精品自拍| 91嫩草亚洲精品| 亚州免费一级毛片| 亚洲国产成人综合精品| 亚洲国产午夜福利在线播放| 嫩草影院在线播放www免费观看| 亚洲另类古典武侠| 亚洲女人被黑人巨大进入| 精品一区二区三区无码免费视频| 亚洲a∨国产av综合av下载| 亚洲阿v天堂在线| 在线免费视频一区| 成人爽a毛片免费| 色欲aⅴ亚洲情无码AV蜜桃| 亚洲成AV人片在线观看WWW| 毛片免费观看视频| 久久国产免费观看精品| 亚洲精品乱码久久久久久蜜桃图片 | 在线观看亚洲精品国产| 国拍在线精品视频免费观看| 一级做a爰片久久免费| 亚洲AV无码成人专区| 亚洲日韩av无码| 国产传媒在线观看视频免费观看 | 222www免费视频| 亚洲一区二区三区免费| 亚洲欧美日韩综合俺去了| 亚洲AV日韩精品久久久久| 亚洲成年看片在线观看| 希望影院高清免费观看视频| 两个人看的www高清免费观看| 亚洲国产精品无码久久久秋霞1| 久久国产亚洲高清观看| 中文字幕第13亚洲另类| 在线永久免费观看黄网站| 国产成人精品免费午夜app| 免费在线看黄网站| 国产免费久久精品丫丫| 偷自拍亚洲视频在线观看99| 国产精品高清视亚洲精品| 亚洲宅男永久在线|