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
          主站蜘蛛池模板: 峡江县| 石柱| 枞阳县| 张家口市| 荆州市| 汤阴县| 神池县| 乐昌市| 赤城县| 甘孜县| 仁布县| 抚顺市| 阿拉善右旗| 甘谷县| 普兰县| 噶尔县| 彭州市| 沂源县| 洪洞县| 太保市| 喀喇沁旗| 白沙| 孟州市| 山东| 雷州市| 友谊县| 清流县| 玉树县| 鹤峰县| 休宁县| 连平县| 塘沽区| 濮阳县| 兴仁县| 巴彦淖尔市| 遵义市| 略阳县| 天气| 望都县| 交口县| 扎赉特旗|