收藏 JSP自定义标签EL表达式取值问题

本文提供了一个关于标签解析的示例,展示了如何通过标签解析实现特定功能,并提供了相关Java代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

源:http://bbs.youkuaiyun.com/topics/210040287

评:

给你个标签的例子自己看看吧!
标签:<framework:VoucherCodeToName code="" />

tld.xml


<tag>
        <name>VoucherCodeToName</name>
        <tagclass>com.itown.crm.fee.vouchermanager.util.VoucherCodeToNameTag</tagclass>
        <bodycontent>JSP</bodycontent>
        <attribute>
            <name>code</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
</tag>
VoucherCodeToNameTag.java

package com.itown.crm.fee.vouchermanager.util;

import java.util.ArrayList;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;

import org.apache.commons.lang.StringUtils;
import org.apache.taglibs.standard.tag.el.core.ExpressionUtil;

import com.itown.crm.fee.vouchermanager.po.FeeVoucherInfo;
import com.itown.crm.util.DaoUtil;
import com.itown.framework.persistence.CachedRowSet;
import com.itown.util.ormapping.BeanHelper;

public class VoucherCodeToNameTag extends TagSupport {
	
	protected String code = "";

	public String getCode() {
		return code;
	}

	public void setCode(String code) {
		this.code = code;
	}
	
	public int doStartTag() throws JspException {
		//解析表达式
		evaluateExpressions();
		//如果属性值为NUll或者为"",则不进行转换
		if(StringUtils.isBlank(code)) {
			return super.doStartTag();
		}
		try {
			String name = null;
			StringBuffer sql = new StringBuffer();
			sql.append("select * from FEE_VOUCHER_INFO where VOUCHER_ID='");
			sql.append(code);
			sql.append("'");

			CachedRowSet rs = DaoUtil.executeQuery(sql.toString());
			
			ArrayList list = BeanHelper.mapBeansByRS(rs, FeeVoucherInfo.class);
			if(list.size() > 0){
				name = ((FeeVoucherInfo)list.get(0)).getVoucherName();
			}
			this.pageContext.getOut().print(StringUtils.trimToEmpty(name));
		} catch (Exception e) {
			e.printStackTrace();
		}
		return SKIP_BODY;
	}
	private void evaluateExpressions() {
		try {
			code = (String) ExpressionUtil.evalNotNull("VoucherCodeToName", "code", code, java.lang.Object.class, this, pageContext); //第一个参数为这个标签的名称
        }
        catch(Exception ex) {
        	code = null;
        }
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值