1

根据下面列出的stackoverflowConverter问题中描述的相同问题在托管Bean中拥有一个实例后,我收到一个异常,即找不到该对象。

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>
4

2 回答 2

1

converterId属性需要转换器 ID(转换器名称)。任何 EL 表达式值都被评估为String. 您基本上toString()是将转换器实例的结果传递给它,即ch.foo.EnitityConverter@f163464. 该转换器 ID 又不被识别为任何已注册的转换器。但是..您不想传递转换器 ID,而只是引用整个转换器实例。

converterId每当您想引用整个具体实例时,该属性都是错误的属性。改用binding属性,或输入组件的converter属性。

因此,所以

<h:selectManyCheckbox value="#{bean.selectedEmployees}">
  <f:converter binding="#{bean.entityConverter}" />
  <f:selectItems value="#{bean.allEmployees}" var="e" itemLabel="#{e.name}" />    
</h:selectManyCheckbox>

或者

<h:selectManyCheckbox value="#{bean.selectedEmployees}" converter="#{bean.entityConverter}">
  <f:selectItems value="#{bean.allEmployees}" var="e" itemLabel="#{e.name}" />    
</h:selectManyCheckbox>
于 2012-11-16T12:31:34.183 回答
-2

它缺少converter名称。你的名字可能是这样的entityConverter。默认为课程名称。如下使用;

   <f:converter converterId="#{entityConverter}" />
于 2012-11-16T10:52:54.623 回答