2

У меня есть приложение, использующее Primefaces 3.5 с Omnifaces 1.5 на Jboss 6, используя MyFaces 2.1.5java.io.NotSerializableException - org.omnifaces.taghandler.Converter

при попытке использовать o:converter я получаю последующих ошибка.

org.omnifaces.taghandler.Converter 

viewId=/xhtml/propelModules/initiatePropel.xhtml 
location=C:\jboss-6.1.0.Final\server\default\deploy\PropelEAR.ear\PropelWeb.war\xhtml\propelModules\initiatePropel.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> 
+0

Вы используете экономию государства на стороне клиента? – rdcrng

+0

Да. Это беспокойство? – Sujoy

+0

Нет, было просто интересно, как вы его обнаружили, потому что единственным способом было бы ожидать сериализации сессии. Я не уверен, но на самом деле это может быть надзор в Omnifaces. Я уверен, что BalusC скоро посмотрит на него :) – rdcrng

ответ

3

я могу воспроизвести вашу проблему. Это ошибка в MyFaces 2.1.5. Я не могу найти связанный отчет об ошибке и версию исправления, но я могу хотя бы сказать, что эта конструкция отлично подходит для меня с текущим MyFaces 2.1.12. Таким образом, обновление MyFaces должно сделать это и для вас.


Unrelated к конкретной проблеме, стратегия преобразования здесь несколько странно. Просто используйте omnifaces.SelectItemsConverter или omnifaces.SelectItemsIndexConverter (если у вас нет хорошего equals() на объекте Employee) должно быть достаточно.

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

SelectItems(Index)Converter строго не требуют List<SelectItem> как модель, она требует только в представлении на <f:selectItem(s)>. List(Index)Converter является intented для компонентов, которые не используют <f:selectItem(s)>, такие как <p:autoComplete>, <p:picklist> и т.д.

Это было бы альтернативное решение, если вы не можете обновить MyFaces по какой-то причине.

+0

Спасибо. Конвертер SelectItems (Index) отлично справился. Не удалось попробовать с myfaces 2.1.12, так как загрузка заблокирована на работе :( – Sujoy

Смежные вопросы