我在某些JSP页面中大量使用ArrayList。我想像这样访问一个ArrayList:
${myArrayList.size}
但是由于对象必须符合JavaBean标准myArrayList.getMyPropertyName()(${myArrayList.myPropertyName}在JSP / JSTL中),因此该myArrayList.size()函数不可访问。
myArrayList.getMyPropertyName()
${myArrayList.myPropertyName}
myArrayList.size()
我还应该使用其他课程吗?
更新:
很难接受这样的功能,例如仅在清洁的衬板上保留了JSP中的ArrayList的大小之类的功能,但似乎还有其他原因是设计师选择了该功能.size()而不是.getSize()
.size()
.getSize()
我想如果您支持${fn:length(myArrayList)}或${myArrayList.getSize()}语法,这的确不是问题。
${fn:length(myArrayList)}
${myArrayList.getSize()}
标题说明了一切:为什么ArrayList没有getSize()而不是size()?
如“ Java Collections API设计常见问题解答 ”中所述:
为什么不使用“ Beans样式名称”来保持一致性? 尽管新集合方法的名称不遵循“ Beans命名约定”,但我们认为它们是合理,一致且适合其目的的。应当记住,Bean命名约定不适用于整个JDK。AWT确实采用了这些公约,但是该决定有些争议。我们怀疑collections API会被广泛使用,通常在一行代码上使用多个方法调用,因此名称简短很重要。考虑例如Iterator方法。当前,对集合的循环如下所示: 对于(迭代器i = c.iterator(); i.hasNext();) System.out.println(i.next()); 即使Collection名称是一个长表达式,所有内容都可以整齐地放在一行中。如果我们将方法命名为“ getIterator”,“ hasNextElement”和“ getNextElement”,那么情况将不再如此。因此,我们采用了“传统的” JDK样式而不是Beans样式。
为什么不使用“ Beans样式名称”来保持一致性?
尽管新集合方法的名称不遵循“ Beans命名约定”,但我们认为它们是合理,一致且适合其目的的。应当记住,Bean命名约定不适用于整个JDK。AWT确实采用了这些公约,但是该决定有些争议。我们怀疑collections API会被广泛使用,通常在一行代码上使用多个方法调用,因此名称简短很重要。考虑例如Iterator方法。当前,对集合的循环如下所示:
对于(迭代器i = c.iterator(); i.hasNext();) System.out.println(i.next());
即使Collection名称是一个长表达式,所有内容都可以整齐地放在一行中。如果我们将方法命名为“ getIterator”,“ hasNextElement”和“ getNextElement”,那么情况将不再如此。因此,我们采用了“传统的” JDK样式而不是Beans样式。