当前位置:  开发笔记 > 编程语言 > 正文

如何在JSF表达式语言中获得列表的长度?

如何解决《如何在JSF表达式语言中获得列表的长度?》经验,为你挑选了4个好方法。

如何获得ArrayList使用JSF EL表达式的长度?

#{MyBean.somelist.length}

不起作用.



1> billjamesdev..:

是的,因为Java API创建委员会中的某些天才决定,即使某些类具有size()成员或length属性,它们也不会实现,getSize()或者getLength()JSF和大多数其他标准需要,但您无法做到您想要的.

有几种方法可以做到这一点.

一:向Bean添加一个返回长度的函数:

In class MyBean:
public int getSomelistLength() { return this.somelist.length; }

In your JSF page:
#{MyBean.somelistLength}

二:如果你正在使用Facelets(哦,上帝,为什么你不使用Facelets!),你可以添加fn命名空间并使用长度函数

In JSF page:
#{ fn:length(MyBean.somelist) }


对于像我这样登陆这里的人,仍然是2年后,考虑到你可以在你的facelet中添加以下命名空间:`xmlns:fn ="http://java.sun.com/jsp/jstl/functions"`
使用fn:length为我使用裸JSP(没有JSF,Facelets;超遗留项目在逐步淘汰之前进行了轻微更新).要使用的正确标记库:`<%@ taglib uri ="http://java.sun.com/jsp/jstl/functions"prefix ="fn"%>`
fn可能是要走的路,不幸的是它仅在大于1.1的JSTL版本中可用.
或者,正如我所说,在Facelets中

2> Damo..:

你的意思是尺寸()不是吗?

#{MyBean.somelist.size()}

适合我(使用JBoss Seam,它有Jboss EL扩展)


@nemo - 这是在JSR245维护版本中解决的:http://blogs.sun.com/kchung/entry/jsr_245_mr_part_i(根据JEE规范,这将是JEE6)

3> James McMaho..:

注意:此解决方案适用于旧版本的JSTL.对于大于1.1的版本,我推荐使用比尔詹姆斯的fn:length(MyBean.somelist)建议.


本文有一些更详细的信息,包括另一种可能的解决方案;

问题是我们正在尝试调用列表的大小方法(这是一个有效的LinkedList方法),但它不是符合JavaBeans的getter方法,因此无法计算表达式list.size-1.

有两种方法可以解决这个难题.首先,您可以使用RT Core库,如下所示:


其次,如果要在JSP页面中避免使用Java代码,可以实现一个包含列表的简单包装类,并使用符合JavaBeans的getter方法提供对列表大小属性的访问.该bean列在代码清单2.25中.

c_rt方法的问题在于您需要手动从请求中获取变量,否则它无法识别它.此时,您将为应该在功能中构建的内容添加大量代码.这是EL中的GIANT缺陷.

我最终使用了"包装器"方法,这里是它的类;

public class CollectionWrapper {

    Collection collection;

    public CollectionWrapper(Collection collection) {
        this.collection = collection;
    }

    public Collection getCollection() {
        return collection;
    }

    public int getSize() {
        return collection.size();
    }
}

还没有人提到的第三个选项是将列表大小放入模型中(假设您使用的是MVC)作为单独的属性.因此,在您的模型中,您将拥有"someList",然后是"someListSize".这可能是解决此问题的最简单方法.



4> p udaykiran..:
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>


在屏幕上显示表格大小

例: Table Size = 5

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有