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 閱讀(7127) 評(píng)論(3)  編輯  收藏 所屬分類: Struts2.x
          主站蜘蛛池模板: 吉木萨尔县| 黄陵县| 星座| 磐石市| 准格尔旗| 澄城县| 义马市| 石泉县| 敖汉旗| 巴塘县| 丹巴县| 武威市| 门源| 灵璧县| 博爱县| 望城县| 政和县| 顺昌县| 莆田市| 伊金霍洛旗| 合川市| 光山县| 沂南县| 手游| 皮山县| 临邑县| 枞阳县| 堆龙德庆县| 瑞丽市| 金湖县| 彩票| 太康县| 浪卡子县| 珠海市| 岚皋县| 南京市| 西华县| 札达县| 华阴市| 东乌| 湘西|