休眠的清新视图



我设置了一个刷新视图,它使用休眠添加项目,但我在按提交后无法更新它,这是刷新视图:

   public class ListViewPanel extends Panel {
/**
 * 
 */
private static final long serialVersionUID = 1L;
final List<IModel<UserDetails>> users = new ArrayList<IModel<UserDetails>>();
public ListViewPanel(String id, IModel<?> model) {
    super(id, model);
    Test test = new Test();
    SessionFactory sessionFactory = test.configureSessionFactory();
    Session session = sessionFactory.openSession();
    listUsers(session, users);
    add(new RefreshingView<UserDetails>("users") {
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        @SuppressWarnings("unchecked")
        @Override
        protected Iterator getItemModels() {
            return users.iterator();
        }
        @Override
        protected void populateItem(Item<UserDetails> item) {
            UserDetails user = item.getModelObject();
            item.add(new Label("userName", user.getUserName()));
            item.add(new Label("userAddress", user.getAddress()));
        }
    });
}
public void listUsers(Session session, List<IModel<UserDetails>> users) {
    Criteria criteria = session.createCriteria(UserDetails.class);
    for (Object i : criteria.list()) {
        users.add(Model.of((UserDetails) i));
    }
}

然后我将列表视图面板添加到我的主页:

   add(usersView = new ListViewPanel("users", null));

然后在我的OnSubmit按钮中,我尝试调用一个新的模型对象

   usersView.getDefaultModelObject();

数据正在添加到休眠状态,因为每次运行应用程序时,ListViewPanel 都会显示新条目,但在程序运行时不会更新这些条目。

您需要了解 Wicket 的模型概念。 getDefaultModel() 提供绑定到某个组件(页面、面板等)的模型。您有责任提供数据。

在您的情况下,将数据包装在LoadableDetachableModel<UserDetails>中,并向RefreshingView<UserDetails>提供模型。

如果使用 ajax 提交表单,请将ListViewPanel添加到AjaxRequestTarget(这标记了需要重新绘制的组件)。

最新更新