Java 通过“预挂起”别名对象方法;获得;在JSP页面中使用
我有一个自定义bean的Java 通过“预挂起”别名对象方法;获得;在JSP页面中使用,java,jsp,jstl,Java,Jsp,Jstl,我有一个自定义bean的ArrayList。我想通过调用ArrayList的toArray方法,然后在它包含的对象上重写toString,将jstljoin函数与ArrayList一起使用 有人说,没有什么能真正阻止我扩展类以包含我想向JSP公开的方法/属性的“get” 因此,对于这个例子: class MyArrayList extends ArrayList { public Object[] getToArray() { return this.toArray();
ArrayList
。我想通过调用ArrayList
的toArray
方法,然后在它包含的对象上重写toString
,将jstljoin
函数与ArrayList
一起使用
有人说,没有什么能真正阻止我扩展类以包含我想向JSP公开的方法/属性的“get”
因此,对于这个例子:
class MyArrayList extends ArrayList
{
public Object[] getToArray()
{
return this.toArray();
}
}
好主意
我一直在创建类似这样的类,并考虑到可重用性,这让我想知道:是否存在一个库,它通过将有用的方法别名为“get”版本来扩展许多核心Java类,以便在JSP中使用它们
当然,这可能是我没有完全掌握JSP的一些基本概念的另一个例子,但我认为在JSP页面中只能使用具有“get”样式方法名称的bean类型类纯粹是一种不便。如果是这样,请告诉我为什么这样的图书馆是个坏主意。基本上,如果我描述的库不存在,为什么不存在呢?至于您的具体功能需求,您可以创建一个定制的EL
join()
函数,它接受一个列表
或集合
例如
package.com.example;
导入java.util.Collection;
公共最终类函数{
私有函数(){}
公共静态字符串联接(集合集合、字符串分隔符){
StringBuilder=新的StringBuilder();
for(E元素:集合){
如果(builder.length()>0){
builder.append(分隔符);
}
builder.append(元素);
}
返回builder.toString();
}
}
您可以在/WEB-INF/functions.tld
文件中按如下方式注册:
1
自定义函数
http://example.com/functions
参加
com.example.Functions
java.lang.String连接(java.util.Collection,java.lang.String)
最终可以用作
${f:join(bean.list,,)}
或者,如果您碰巧已经在类路径中,只需委托给它即可
参加
org.apache.commons.lang.StringUtils
java.lang.String连接(java.util.Collection,java.lang.String)
至于您最初的问题,我不希望将自定义公共方法添加到现有接口的自定义实现中,而依赖于该自定义实现。EL 2.2—它允许您调用任意方法(在Tomcat 7以后提供)—应该可以满足您的需要。e、 g.${someListObject.toArray()}它应该返回一个数组允许调用任意方法(在Tomcat7以后的版本中可用)的EL2.2是否满足了您的需要?e、 g.${someListObject.toArray()}它应该返回一个数组。@MarkThomas听起来确实是这样。我(现在)被6卡住了。谢谢,这是一个很好的答案。这是一个很好的解决方案,也是在这种情况下我的“别名”类的一个很好的替代方案。谢谢