posts - 24,  comments - 25,  trackbacks - 0
          聲明標(biāo)簽
          \WebRoot\WEB-INF\tangs.tld
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
          <taglib>
              
          <tlib-version>2.2.3</tlib-version>
              
          <jsp-version>1.2</jsp-version>
              
          <short-name>tangs</short-name>
              
          <uri>/tangs</uri>
              
          <display-name>"Tangs Tags"</display-name>
              
          <tag>
                  
          <name>button</name>
                  
          <tag-class>com.tag.button.ButtonTag</tag-class>
                  
          <body-content>empty</body-content>
                  
          <attribute>
                      
          <name>name</name>
                      
          <required>true</required>
                      
          <rtexprvalue>true</rtexprvalue>
                  
          </attribute>
              
          </tag>
          </taglib>

          定義標(biāo)簽接受到的值
          \com\tag\button\
          Button.java
          package com.tag.button;

          public class Button {
              
          private String parent;

              
          public Button() {
              }

              
          public String getParent() {
                  
          return parent;
              }

              
          public void setParent(String parent) {
                  
          this.parent = parent;
              }

          }

          處理標(biāo)簽
          \com\tag\button\Buttons.java
          package com.tag.button;

          import java.io.IOException;
          import java.io.Writer;
          import java.util.logging.Level;
          import java.util.logging.Logger;

          import org.apache.struts2.components.Component;

          import com.opensymphony.xwork2.util.ValueStack;

          public class Buttons extends Component {

              
          private String name;

              
          public String getName() {
                  
          return name;
              }

              
          public void setName(String name) {
                  
          this.name = name;
              }

              
          public Buttons(ValueStack arg0) {
                  
          super(arg0);
              }

              @Override
              
          public boolean start(Writer arg0) {
                  
          boolean result = super.start(arg0);
                  
          try {
                      StringBuilder str 
          = new StringBuilder();
                      
          boolean isValid = true;
                      
                      Button bt 
          = (Button) this.getStack().findValue(name);
                      isValid 
          = bt != null ? true : false;
                      
                      
          if (isValid) {
                          str.append(
          "<input type=\"submit\" value=\"web.button.query\" method=\"search\"/>");
                      }
                      arg0.write(str.toString());
                  } 
          catch (IOException ex) {
                      Logger.getLogger(Trees.
          class.getName()).log(Level.SEVERE, null, ex);
                  }
                  
          return result;
              }

          }

          調(diào)用標(biāo)簽
          \com\tag\button\ButtonTag.java
          package com.tag.button;

          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;

          import org.apache.struts2.components.Component;
          import org.apache.struts2.views.jsp.ComponentTagSupport;

          import com.opensymphony.xwork2.util.ValueStack;

          public class ButtonTag extends ComponentTagSupport {
              
          private static final long serialVersionUID = 1L;
              
              
          private String name;

              
          public void setName(String name) {
                  
          this.name = name;
              }

              @Override
              
          public Component getBean(ValueStack arg0, HttpServletRequest arg1,
                      HttpServletResponse arg2) {
                  
          return new Buttons(arg0);
              }

              
          protected void populateParams() {
                  
          super.populateParams();
                  Buttons buttons 
          = (Buttons) component;
                  buttons.setName(name);
              }
          }

          測(cè)試
          \com\tag\button\ButtonAction.java
          package com.tag.button;

          import com.opensymphony.xwork2.ActionSupport;

          public class ButtonAction extends ActionSupport {

              
          private static final long serialVersionUID = 1L;

              
          private Button names;

              
          public Button getNames() {
                  
          return names;
              }

              
          public void setNames(Button names) {
                  
          this.names = names;
              }

              @Override
              
          public String execute() throws Exception {
                  Button btn 
          = new Button();
                  btn.setParent(
          "1");

                  names 
          = btn;
                  
          return SUCCESS;
              }

          }

          備忘
          接受對(duì)象數(shù)組的處理:
          private Tree[] names;

              
          public Tree[] getNames() {
                  
          return names;
              }

              
          public void setNames(Tree[] names) {
                  
          this.names = names;
              }

              @Override
              
          public String execute() throws Exception {
                  Tree[] trees 
          = new Tree[5];
                  names 
          = trees;
                  
                  
          return SUCCESS;
              }

          public boolean start(Writer arg0) {
                  
          boolean result = super.start(arg0);
                  
                  
          try {
                      StringBuilder str 
          = new StringBuilder();
                      
          boolean isValid = true;
                     

                      Tree[] trees = (Tree[]) this.getStack().findValue(name);
                      isValid 
          = trees != null ? true : false;
                      if (isValid) {
                          str.append(
          "");
                      }

                      arg0.write(str.toString());
                  } 
          catch (IOException ex) {
                      Logger.getLogger(Trees.
          class.getName()).log(Level.SEVERE, null, ex);
                  }
                  
                  
          return result;
              }

          jsp頁面的調(diào)用:
          <%@taglib uri="/tangs" prefix="tangs"%>
          <html>
              
          <body>
                  
          <tangs:button name="names"/>
              
          </body>
          </html>

          沒時(shí)間詳細(xì)寫了,不過應(yīng)該看得懂。
          posted on 2008-11-06 18:48 Jarry 閱讀(7125) 評(píng)論(3)  編輯  收藏 所屬分類: Struts2.x
          主站蜘蛛池模板: 仪征市| 佳木斯市| 台江县| 思茅市| 长葛市| 石渠县| 三门县| 南江县| 延边| 繁昌县| 乃东县| 雷山县| 冕宁县| 竹北市| 建湖县| 吉林省| 政和县| 阜新市| 平安县| 和平县| 泰顺县| 张家口市| 耿马| 哈尔滨市| 赞皇县| 蓝田县| 五指山市| 黄浦区| 青神县| 芜湖市| 雅安市| 敦化市| 江川县| 松阳县| 绥德县| 英吉沙县| 福鼎市| 婺源县| 隆回县| 临洮县| 康平县|