我想要一个带有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是空的,我没有看到任何项目。我想加载所有列表,然后单击任何选择项,element
变量更改其值。谢谢!
不使用ui:repeat
和f: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>