在Struts框架下定制自己的标签

Struts的html标签是个很好用的东东,但有时候不能完全满足要求,我们也许需要定制自己的标签。一点困难在于我们如何为其赋值呢?
用Struts提供的一个工具类, org.apache.struts.util.RequestUtils,它的lookup方法将在pageContext范围内搜索bean的属性值
RequestUtils.lookup(super.pageContext, Constants.BEAN_KEY,p1,null)

下面这个例子演示了如何把2个inputs 做成一个标签。

//Tag:
package com.tag;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;

import org.apache.struts.taglib.html.Constants;
import org.apache.struts.util.RequestUtils;
 

public class TwoInputsTag extends BodyTagSupport {
    private String p1;
    private String p2;


    public String getP1() {
        return p1 ;
    }
    public void setP1(String p1) {
        this.p1 = p1;
    }
    public String getP2() {
        return p2;
    }
    public void setP2(String p2) {
        this.p2 = p2;
    }
    public int doStartTag() throws JspException{
  JspWriter out = pageContext.getOut();
  try{
      Object p1Obj = RequestUtils.lookup(super.pageContext, Constants.BEAN_KEY,p1,null) ;
      Object p2Obj = RequestUtils.lookup(super.pageContext, Constants.BEAN_KEY,p2,null) ;
     
      String p1Value = p1Obj == null ? "" :(String)p1Obj ;
      String p2Value = p2Obj == null ? "" :(String)p2Obj ;
     
      String outs =
          "<input type=/"text/" name=/""+p1+"/"  size=/"16/" value=/""+p1Value+"/" class=/"inp/">"
       +"<input type=/"text/" name=/""+p2+"/"  size=/"16/" value=/""+p2Value+"/" class=/"inp/">";
   
      out.print(outs);
  }catch(Exception e){
      e.printStackTrace();
  }
  return super.SKIP_BODY;
    }
}

//JSP:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib uri="/WEB-INF/tld/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tld/mytags.tld" prefix="mytags"%>
<HTML>
<HEAD>
<TITLE>Some tags</TITLE>
</HEAD>
<body>
<html:form action="TestTagsAction">
 <mytags:fourinputs p1="id1" p2="id2" />
 
 <html:submit property="submit" />
</html:form>
</body>
</HTML>

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;

import org.apache.struts.taglib.html.Constants;
import org.apache.struts.util.RequestUtils;
 

public class TwoInputsTag extends BodyTagSupport {
    private String p1;
    private String p2;


    public String getP1() {
        return p1 ;
    }
    public void setP1(String p1) {
        this.p1 = p1;
    }
    public String getP2() {
        return p2;
    }
    public void setP2(String p2) {
        this.p2 = p2;
    }
    public int doStartTag() throws JspException{
  JspWriter out = pageContext.getOut();
  try{
      Object p1Obj = RequestUtils.lookup(super.pageContext, Constants.BEAN_KEY,p1,null) ;
      Object p2Obj = RequestUtils.lookup(super.pageContext, Constants.BEAN_KEY,p2,null) ;
     
      String p1Value = p1Obj == null ? "" :(String)p1Obj ;
      String p2Value = p2Obj == null ? "" :(String)p2Obj ;
     
      String outs =
          "<input type=/"text/" name=/""+p1+"/"  size=/"16/" value=/""+p1Value+"/" class=/"inp/">"
       +"<input type=/"text/" name=/""+p2+"/"  size=/"16/" value=/""+p2Value+"/" class=/"inp/">";
   
      out.print(outs);
  }catch(Exception e){
      e.printStackTrace();
  }
  return super.SKIP_BODY;
    }
}

//JSP:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib uri="/WEB-INF/tld/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tld/mytags.tld" prefix="mytags"%>
<HTML>
<HEAD>
<TITLE>Some tags</TITLE>
</HEAD>
<body>
<html:form action="TestTagsAction">
 <mytags:fourinputs p1="id1" p2="id2" />
 
 <html:submit property="submit" />
</html:form>
</body>
</HTML>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值