posts - 24,  comments - 25,  trackbacks - 0
          聲明標簽
          \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>

          定義標簽接受到的值
          \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;
              }

          }

          處理標簽
          \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;
              }

          }

          調用標簽
          \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);
              }
          }

          測試
          \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;
              }

          }

          備忘
          接受對象數組的處理:
          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頁面的調用:
          <%@taglib uri="/tangs" prefix="tangs"%>
          <html>
              
          <body>
                  
          <tangs:button name="names"/>
              
          </body>
          </html>

          沒時間詳細寫了,不過應該看得懂。
          posted on 2008-11-06 18:48 Jarry 閱讀(7124) 評論(3)  編輯  收藏 所屬分類: Struts2.x
          主站蜘蛛池模板: 琼结县| 崇明县| 会昌县| 丹阳市| 丰原市| 苍溪县| 崇明县| 高密市| 西宁市| 天镇县| 丹东市| 虎林市| 安阳县| 南乐县| 漳州市| 吉水县| 宁国市| 太仆寺旗| 靖江市| 杭州市| 诸暨市| 明星| 丘北县| 成都市| 顺昌县| 太原市| 宣汉县| 松阳县| 渭源县| 广昌县| 鲜城| 昌邑市| 曲松县| 朔州市| 全州县| 萨迦县| 志丹县| 岳普湖县| 仙居县| 鲁山县| 上蔡县|