facelets.viewhandler Ошибка отображения при просмотре NotSerializableException: eu.jakubiak.jpa.translator.Translator$TranslatorProxyMethodInterceptor
Я работаю над исправлением ошибки в ранее существующем приложении, используя:
- Java 6
- JBoss 4.2.3 GA
- JBoss Seam 2.2.0 GA
- JSF2
Приложение использует эту библиотеку для перевода
http://code.google.com/p/jpa-translator/
http://code.google.com/p/support/wiki/WikiSyntax
Вы знакомы с этой ошибкой при попытке опубликовать свойство объекта EJB в представлении JSF?
ERROR [facelets.viewhandler] (http-...) Error Rendering View[/public/answer.xhtml]
java.io.NotSerializableException: eu.jakubiak.jpa.translator.Translator$TranslatorProxyMethodInterceptor
Я мой код имел это
<c:forEach var="_d" items="#{indicatorValuesDimension}">
<s:div styleClass="answer-dimension">#{_d.key.name}</s:div>
Где индикатор ValuesDimension - это java.util.Map, ключ - это объектный компонент @Transhable, а name - свойство @Translate String.
Но если я делаю это вместо этого, он работает просто отлично...
<c:forEach var="_d" items="#{indicatorValuesDimension}">
#{_d.key.name}
Таким образом, то же выражение отлично работает вне любого тега JSF, но выдает исключение NotSerializableException при использовании внутри тега JSF.
Кто-нибудь сталкивался с этим раньше? Есть указатели?
1 ответ
Решено переключением на
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
в моем web.xml. С помощью
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
был причиной проблемы, потому что многие классы в библиотеке (BeanReflector?, TranslatorProxyMethodInterceptor? и т. д.) не реализуют java.io.Serializable.