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

时间:2016-07-17 00:31:10

标签: forms jsf jsf-2 primefaces radio

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

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变量就会改变它的值。 谢谢!

1 个答案:

答案 0 :(得分:3)

不使用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>