【发布时间】:2014-03-13 13:36:15
【问题描述】:
我收到以下消息:
Value is no String (class=org.xxx.Foo, value=org.xxx.Foo@366d5595) and component j_id17:j_id114:j_id125with path: {Component-Path : [Class: org.ajax4jsf.framework.ajax.AjaxViewRoot,ViewId: /foo.xhtml][Class: org.ajax4jsf.ajax.html.Include,Id: j_id17][Class: javax.faces.component.html.HtmlForm,Id: j_id114][Class: javax.faces.component.html.HtmlSelectOneMenu,Id: j_id125]} does not have a Converter.
Xhtml:
<h:selectOneMenu value="#{bar.foo}">
<f:selectItem itemValue="#{bar.foos}" />
</h:selectOneMenu>
Foo 是:
import javax.faces.model.SelectItem;
@Audited
@Entity
@Table(name= "foo")
@AccessType("property")
public class Foo extends SelectItem implements Serializable{
....
}
为什么我需要一个转换器来将 SelectItem 转换为 SelectItem?
【问题讨论】:
-
因为 HTML 和 HTTP 不能传递 Java 对象。它们只能传递由
String表示的Java 字符。Converter可以在String和所需的 Java 对象之间进行转换。顺便说一句,extends SelectItem是不必要且无意义的。
标签: java jsf-2 converter selectonemenu