[
https://issues.apache.org/jira/browse/WICKET-4655?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Martin Grigorov resolved WICKET-4655.
-------------------------------------
Resolution: Not A Problem
Please use the mailing lists for asking questions like this.
Your bean is request scoped so it will be recreated for each request. Wicke
serializes only a Proxy to the bean.
Try with session scope.
> Can a SpringBean's state be serialized?
> ---------------------------------------
>
> Key: WICKET-4655
> URL: https://issues.apache.org/jira/browse/WICKET-4655
> Project: Wicket
> Issue Type: Improvement
> Components: wicket-spring
> Affects Versions: 1.5.7
> Environment: Windows/Linux, JDK 6, Spring 3.1.0
> Reporter: Shu
>
> I have Wicket page containing a SpringBean-injected object that contains
> state. This state is not serialized and hence not available when the user
> revisits the page via the Back button.
> In the example below, the DAODataProvider object has an entityClass property.
> When the user goes back to the page via the Back button, the dataProvider and
> dataProvider.dao properties are available, but dataProvider.entityClass is
> null.
> {code}
> public class DemoPage extends WebPage {
> @Inject @SpringBean DAODataProvider dataProvider;
>
> public DemoPage(final PageParameters parameters) throws
> ClassNotFoundException, IntrospectionException {
> super(parameters);
>
> dataProvider.setEntityClass(UserAccount.class);
> add(new CRUDPanel("panel", UserAccount.class, dataProvider));
> }
> }
> @Component
> @Scope("request")
> public class DAODataProvider extends SortableDataProvider {
> @Inject protected GeneralDAO dao;
>
> private Class<?> entityClass;
>
> public DAODataProvider() {
> super();
> }
> }
> {code}
> The solution seems to be to do this:
> public class DemoPage extends WebPage {
> @Inject @SpringBean DAODataProvider dataProvider;
>
> public DemoPage(final PageParameters parameters) throws
> ClassNotFoundException, IntrospectionException {
> super(parameters);
>
> dataProvider.setEntityClass(UserAccount.class);
> add(new CRUDPanel("panel", UserAccount.class, dataProvider));
> }
> @Override
> protected void onBeforeRender()
> {
> dataProvider.setEntityClass(UserAccount.class);
> super.onBeforeRender();
> }
> }
> Is there a good way to indicate that a SpringBean-injected object should have
> its non-injected properties serialized, to avoid doing the onBeforeRender
> workaround above?
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira