如何在Java自定义标签中让自定义的标签属性正确接收EL表达式对象
我们在项目开发中为了更方便灵活的使用Java自定义标签,往往需要让自定义的标签属性接收一些EL表达式对象,所幸的是apache为我们提供了简单的实现方式。需要的jar包:jstl.jarstandard.jar 其实这两个包就是我们在使用jstl时所需的两个包。 要接收EL表达式对象,首先得在标签的实现类文件中将这个属性的对象类型设置为Object类型,在set、get方法中,set方法需要引入apache的类:import org.apache.taglibs.standard.lang.support.ExpressionEvaluatorManager; 这个类中有一个evaluate 方法,当el表达式作为参数传入时,调用这个方法,在tag内即可自动把el表达式转化成所需要的对象。 你只需在set方法里如下调用: public void setValue(Object value)throws JspException { this.value = ExpressionEvaluatorManager.evaluate( "value", value.toString(), Object.class, this, pageContext); } ExpressionEvaluatorManager.evaluate有四个参数。 第一个表示tag的名字,在取el表达式出错时使用。一般和属性名字相同。 第二个要求字符串,通常简单调用输入对象的toString方法。 第三个是类,通常用Object.class。 第四个用this即可, 第五个是pageContext变量。
在tld文件中该标签属性的rtexprvalue得设置为true,表示是否支持运行时表达式取值。
OK啦!可以用啦