java.io.NotSerializableException - org.omnifaces.taghandler.



我有一个在Jboss 6上使用Primefaces 3.5和Omnifaces 1.5的应用程序,使用myfaces 2.1.5

在尝试使用该o:converter时,我收到以下错误。

org.omnifaces.taghandler.Converter
viewId=/xhtml/propelModules/initiatePropel.xhtml
location=C:jboss-6.1.0.FinalserverdefaultdeployPropelEAR.earPropelWeb.warxhtmlpropelModulesinitiatePropel.xhtml
phaseId=RENDER_RESPONSE(6)
Caused by:
java.io.NotSerializableException - org.omnifaces.taghandler.Converter
at java.io.ObjectOutputStream.writeObject0(Unknown Source)

有关代码是...

<p:selectManyCheckbox value="#{initiatePropelManagedBean.currentWon.selectedEmployeeList}" 
  layout="pageDirection">
<o:converter converterId="omnifaces.ListIndexConverter" 
      list="#{initiatePropelManagedBean.currentWon.employeeList}" />
     <f:selectItems value="#{initiatePropelManagedBean.currentWon.employeeList}"
       var="emp" itemLabel="#{emp}" itemValue="#{emp}" />
     <p:ajax process="@this" update="employeeCount"></p:ajax>
</p:selectManyCheckbox>

我可以重现你的问题。这是MyFaces 2.1.5中的一个错误。我找不到相关的错误报告和修复版本,但我至少可以说这个结构在当前最新的 MyFaces 2.1.12 上对我来说效果很好。因此,升级MyFaces也应该为您完成。


具体问题无关,转换策略在这里有些奇怪。只需使用 omnifaces.SelectItemsConverteromnifaces.SelectItemsIndexConverter(如果您对Employee实体没有良好的equals())就足够了。

<p:selectManyCheckbox ... converter="omnifaces.SelectItemsIndexConverter">
    <f:selectItems value="#{initiatePropelManagedBean.currentWon.employeeList}" />
</p:selectManyCheckbox>

SelectItems(Index)Converter并不严格要求将List<SelectItem>作为模型,它只需要视图中的<f:selectItem(s)>。该List(Index)Converter用于不使用<f:selectItem(s)>的组件,如<p:autoComplete><p:picklist>等。

如果您由于某种原因无法升级MyFaces,这将是替代解决方案。

相关内容

  • 没有找到相关文章

最新更新