在不使用bean的情况下将列表传递给JSF组件 [英] Pass a list to a JSF component without using a bean

查看:76
本文介绍了在不使用bean的情况下将列表传递给JSF组件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在没有backingbean的情况下将列表传递给EL中的JSF组件?或者换句话说,如何在没有bean的情况下在JSF中声明和初始化List/Array?

how can I pass a List to a JSF-Component in EL without a backingbean? Or in other words how can I declare and initialize a List/Array in JSF without a bean?

示例:

caller.xhtml

caller.xhtml

/* Call a JSF-Component */
<mycomp:displayList value="HERE I WANT TO PASS A LIST WITHOUT A BACKINGBEAN"/>

displayList.xhtml

displayList.xhtml

/* MY Component */
<composite:interface>
     <composite:attribute name="value" type="java.util.list" />
</composite:interface>

是否有可能将未在Bean中声明的列表/集合传递给JSF组件?

Is there any possibility to pass a List/Collection which is not declared in a Bean to a JSF component?

推荐答案

尽管EL中没有列表文字,但您可以通过在faces-config.xml中声明一个列表来声明一个列表,而无需bean包含它:

Although there is no list literal in EL, you can declare a list without requiring a bean to contain it by declaring one in faces-config.xml:

<managed-bean>
    <managed-bean-name>someList</managed-bean-name>
    <managed-bean-class>java.util.ArrayList</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
    <list-entries>
        <value>One</value>
        <value>Two</value>
        <value>Three</value>
    </list-entries>
</managed-bean>

您还可以使用实用程序类型来构建列表:

You can also use a utility type to build a list:

import java.util.*; import javax.faces.bean.*;

@ManagedBean @NoneScoped
public class Lister<T> extends AbstractList<T> {
  private List<T> list = new ArrayList<T>();

  public Lister plus(T t) {
    list.add(t);
    return this;
  }

  @Override public T get(int index) {
    return list.get(index);
  }

  @Override public int size() {
    return list.size();
  }

  @Override public String toString() {
    return list.toString();
  }
}

这可以与#{lister.plus('one').plus('two').plus('three')}

这篇关于在不使用bean的情况下将列表传递给JSF组件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆