gpt4 book ai didi

jsf - 不使用 bean 将列表传递给 JSF 组件

转载 作者:行者123 更新时间:2023-12-04 17:38:25 24 4
gpt4 key购买 nike

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

例子:

来电者.xhtml

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

显示列表.xhtml
/* MY Component */
<composite:interface>
<composite:attribute name="value" type="java.util.list" />
</composite:interface>

是否有可能将未在 Bean 中声明的 List/Collection 传递给 JSF 组件?

最佳答案

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

<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>

您还可以使用实用程序类型来构建列表:
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')} 的表达式一起使用。

关于jsf - 不使用 bean 将列表传递给 JSF 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10667650/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com