如何使用 java 列表 (JSF) 的选项创建 h:selectOneRadio?

How can I create h:selectOneRadio with options of a java list (JSF)?

我想要一个带有 h:selectOneRadio 和 Java ArrayList 信息的 JSF 菜单。 这是我的代码:

XHTML:

<h:selectOneRadio value="#{bean.element}">
    <ui:repeat value = "#{bean.items}" var = "i">
        <f:selectItem itemValue="#{bean.elements[i]}" itemLabel="#{bean.elements[i]}" />
    </ui:repeat>
</h:selectOneRadio>

豆子:

package bean.controlador;

import java.io.IOException;
import java.util.ArrayList;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

@ManagedBean
@SessionScoped
public class Bean {

    private String element;
    private ArrayList<Integer> items;
    private ArrayList<String> elements;

    public Bean() {
        element = "hello";
        elements = new ArrayList<String>();
        elements.add("world");
        elements.add("hello");
        elements.add("thanks");
        items = new ArrayList<Integer>();
        items.add(1);
        items.add(2);
        items.add(3);
    }


    public void load() throws IOException {
        FacesContext.getCurrentInstance().getExternalContext().redirect("link.xhtml");
    }

    public void listenerFuncion() {
        System.out.println("Listener");
    }

    public String getElement() {
        return element;
    }

    public void setElement(String element) {
        this.element = element;
    }

    public ArrayList<Integer> getItems() {
        return items;
    }

    public void setItems(ArrayList<Integer> items) {
        this.items = items;
    }

    public ArrayList<String> getElements() {
        return elements;
    }

    public void setElements(ArrayList<String> elements) {
        this.elements = elements;
    }
}

XHTML 是空的,我没有看到任何项目。我想加载所有列表并单击任何 selectItem,element 变量更改其值。 谢谢!

不使用 ui:repeatf:selectItem,而是使用 f:selectItems,它可以获取项目列表。

以下是您的情况的示例:

<h:selectOneRadio value="#{bean.element}">
    <f:selectItems value="#{bean.items}" var="i" itemValue="#{bean.elements[i]}" itemLabel="#{bean.elements[i]}" />
</h:selectOneRadio>

我不确定我是否完全理解您使用的变量的内容,但这也可能更适合您:

<h:selectOneRadio value="#{bean.element}">
    <f:selectItems value="#{bean.elements}" var="i" itemValue="#{i}" itemLabel="#{i}" />
</h:selectOneRadio>