selectItems itemValue无法识别,而是返回哈希代码

时间:2015-10-28 22:21:50

标签: jsf jsf-2

我有点被selectOneMenu困住了。 我有一个带有Bean和DAO以及POJO的数据库表foo。由于BalusC's great tutorial,我已经建立了一个有效的CRUD页面。

Foo将列idtexta1添加到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;
}


}

1 个答案:

答案 0 :(得分:0)

问题在于FooManagedBean。我删除了条目和voilà,它工作。谢谢@BalusC!