我有点被selectOneMenu
困住了。
我有一个带有Bean和DAO以及POJO的数据库表foo
。由于BalusC's great tutorial,我已经建立了一个有效的CRUD页面。
Foo
将列id
,text
和a1
添加到a5
作为更多值。
该菜单仅显示哈希码列表,例如" com.example.beans.foo@3a3526c3",无论我将itemValue
放在哪里。我也可以输入blabla
,结果是一样的。
这是JSF。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<f:view><h:form>
<h:selectOneMenu value=#{fooBean.id}>
<f:selectItems value="#{fooBean.list}" var="foo" itemValue="#{foo.id}" itemLabel="#{foo.text}" />
</h:selectOneMenu>
</h:column>
</h:form>
</f:view>
</html>
这里foo
:
@ManagedBean (name = "foo")
@ViewScoped
public class Foo implements Serializable {
private String text;
private String id;
//getters and setters
}
和fooBean
:
@ManagedBean (name="fooBean")
@ViewScoped
public class FooBean implements Serializable {
private List<Foo> list;
private Foo foo = new Foo();
private boolean edited;
private String id;
private String text;
@EJB
private FooDAO fooDAO;
@PostConstruct
public void init() {
list = fooDAO.getAll();
}
public void add() {
String id = fooDAO.insert(foo);
foo.setId(id);
list.add(foo);
foo = new Foo();
}
public void edit(Foo Foo) {
this.foo = Foo;
edited = true;
}
public void save() {
fooDAO.update(foo);
foo = new Foo();
edited = false;
}
public void delete(Foo Foo) {
fooDAO.delete(Foo);
list.remove(Foo);
}
public List<Foo> getList() {
return list;
}
public Foo getFoo() {
return foo;
}
public boolean isEdited() {
return edited;
}
public String getId() {
return id;
}
public String getText() {
return text;
}
}
答案 0 :(得分:0)
问题在于Foo
是ManagedBean
。我删除了条目和voilà,它工作。谢谢@BalusC!