struts2 实现自定义标签

/**
 * lostingz
 * Created on 2015年11月18日
 */
package com.test.web.tags;

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 TestTag extends ComponentTagSupport {

    private static final long serialVersionUID = 1L;
    private String code;

    /**
     * 获得一个基本类的对象。
     *
     * @param stack
     * @param req
     * @param res
     * @return
     */
    @Override
    public Component getBean(ValueStack stack, HttpServletRequest req, HttpServletResponse res) {
        return new TestComponent(stack);
    }
     /**
     * 设置标签获取到的code对象。
     * @param code
     */
    public void setCode(String code) {
        this.code = code;
    }

    protected void populateParams() {
        super.populateParams();
        TestComponent testComponent = (TestComponent) component;
        //将code赋值给compnent
        testComponent.setCode(code);
    }

}

 

/**
 * lostingz
 * Created on 2015年11月18日
 */
package com.test.web.tags;

import java.io.IOException;
import java.io.Writer;

import org.apache.struts2.components.Component;
import com.opensymphony.xwork2.util.ValueStack;

public class TestComponent extends Component {

    private String code;

    public TestComponent(ValueStack stack) {
        super(stack);
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public boolean start(Writer writer) {
        boolean flag = true;
        try {
            String result = getInfo(code);
       //输出 writer.write(result); }
catch (IOException e) { e.printStackTrace(); } return flag; } public boolean end(Writer writer, String body) { return super.end(writer, body); } private String getInfo(String code){
     //处理code得到显示的信息
return doSomething(code); } }

配置

<taglib>   
    <tlib-version>2.2.3</tlib-version>   
    <jsp-version>1.2</jsp-version>   
    <short-name>test</short-name>   
    <uri>/testTag</uri><display-name>"test"</display-name>   
        <tag>   
            <name>getCode</name>   
            <tag-class>com.test.web.tags.TestTag</tag-class>    
            <body-content>empty</body-content>       
            <attribute>   
                <name>code</name>   
                <required>false</required>   
                <rtexprvalue>true</rtexprvalue>   
            </attribute>
        </tag>   
</taglib> 
posted @ 2015-11-18 15:17  birkhoff001  阅读(341)  评论(0编辑  收藏  举报