Jsf 表达式错误:命名对象:ch.foo。EnitityConverter@f163464找不到
根据下面列出的问题中描述的相同问题,在托管Bean中有一个Jsf 表达式错误:命名对象:ch.foo。EnitityConverter@f163464找不到,jsf,jsf-2,converter,Jsf,Jsf 2,Converter,根据下面列出的问题中描述的相同问题,在托管Bean中有一个转换器的实例之后,我得到一个异常,即找不到该对象 Expression Error: Named Object: ch.foo.EnitityConverter@f163464 not found 问题: 我的xhtml代码: <h:selectManyCheckbox value="#{bean.selectedEmployees}"> <f:converter converterId="#{bean.e
转换器的实例之后,我得到一个异常,即找不到该对象
Expression Error: Named Object: ch.foo.EnitityConverter@f163464 not found
问题:
我的xhtml代码:
<h:selectManyCheckbox value="#{bean.selectedEmployees}">
<f:converter converterId="#{bean.entityConverter}" />
<f:selectItems value="#{bean.allEmployees}" var="e" itemLabel="#{e.name}" />
</h:selectManyCheckbox>
缺少转换器的名称。您的名字可能类似于entityConverter
。默认值为calss name。使用方法如下
<f:converter converterId="#{entityConverter}" />
converterId
属性需要转换器ID(转换器名称)。任何EL表达式值都将作为字符串计算。您基本上是将转换器实例的toString()
结果传递给它,即ch.foo。EnitityConverter@f163464
。此转换器ID反过来不会被识别为任何已注册的转换器。然而您不想传递转换器ID,而只是引用整个转换器实例
每当您想要引用整个具体实例时,converterId
属性就是错误的属性。使用绑定
属性,或者输入组件的转换器
属性
所以,所以
<h:selectManyCheckbox value="#{bean.selectedEmployees}">
<f:converter binding="#{bean.entityConverter}" />
<f:selectItems value="#{bean.allEmployees}" var="e" itemLabel="#{e.name}" />
</h:selectManyCheckbox>
或
我不使用faces config.xml
来命名转换器。我正在引用托管bean中的转换器实例。请参阅链接的问题。不过,谢谢你的回答即使您使用注释,转换器也有一个名称。您将所有转换器本身作为其ID传递到此处。我认为这是不对的。
<h:selectManyCheckbox value="#{bean.selectedEmployees}" converter="#{bean.entityConverter}">
<f:selectItems value="#{bean.allEmployees}" var="e" itemLabel="#{e.name}" />
</h:selectManyCheckbox>