Когда я получить доступ к JPA удалось значение даты из JSF, он возвращается с javax.faces.component.UdateModelException говоряДата исключения преобразования в JSF составного компонента
'Cannot convert 01.01.10 00:00 of type class java.util.Date to class org.apache.openjpa.util.java$util$Date$proxy
Использование JPA-управляемое значение даты (который означает, что она проксируется) отлично работает, когда он используется непосредственно из EL нравится это:
'<h:outputLabel value="MyDateValue" for="input"/>
'<h:inputText id="inputDate" value="#{bean.myDate}"/>
Однако, это вызывает проблемы при попытке использовать его с составными компонентами и возвращает следующий конвертер исключение и, таким образом, может» t обновить модель ...
The (упрощенный) JSF составной компонент inputDate.xhtml
<head>
<title>A date input field</title>
</head>
<composite:interface>
<composite:attribute name="dateValue"/>
</composite:interface>
<composite:implementation>
<h:outputLabel value="MyDateValue" for="input"/>
<h:inputText id="input" value="#{cc.attrs.dateValue}"/>
</composite:implementation>
Предположение: кажется замена прокси в OpenJPA обрабатывается по-разному, когда значение осуществляется доступ внутри композита. Я предполагаю, что EL-resolver обрабатывает вызовы значений объекта по-разному, когда он передается в композиты. Передача его в композиты означает, что он впервые доступен в составе, что слишком поздно, и требуемая замена прокси-сервера не выполнена (таким образом, исключение преобразователя)
Итак, я попытался изменить язык выражений для MyFaces, но он не работал в Websphere, хотя я поменял загрузку класса на родителя последним и предоставил el-impl и el-api из glassfish в папке lib и вставил необходимый контекст-параметр для MyFaces.
Как вы, ребята, используете JPA-управляемые даты (или другие проксированные объекты) в составных компонентах ???
Вы, кажется, подразумеваете, что он работает, когда не используется составной компонент (поэтому при использовании компонента непосредственно на странице «обычным способом»). Это правда? – BalusC
@BalusC Право. Использование этого «напрямую» работает так, как ожидалось. Я обнаружил, что MyFaces Resolver можно отсортировать по https://cwiki.apache.org/MYFACES/elresolver-ordering.html и немного поиграть с ним, но без успеха. Использование другого ELFactoryImpl (JBoss El 2.0.1) делает трюк для дат профайла JPA, хотя было сложно зарегистрировать его в WebSphere 8. Однако вызовы методов не работают с этим el больше ... – jonnie119
Я никогда раньше видел эту проблему, но я также не использую MyFaces. У вас есть шанс попробовать Mojarra вместо MyFaces, хотя это просто исключить тот и другой. – BalusC