所以,我认为这个问题问,但我会多一点点代码:业务逻辑,其中有一些推荐的地方放置逻辑(上载逻辑)
哪里是把代码的最佳场所在 页面呈现之前初始化模型。我知道有五种选择,但您通常在哪里放置 这种类型的初始化?
在页面呈现之前,我想在我的bean /模型中设置数据,其中的 某些属性可能只针对该页面。
我想有五种选择。
在构造函数中添加初始化逻辑。这可能会起作用,但我不知道是否每个页面调用都会调用构造函数(例如,当页面被反序列化时,该页面是 )。
在onBeforeRender中添加init逻辑。这工作,它要求每个 请求?但这是最好的地方吗?还是配置? onInitialize。
然后,您是否使用更新的值调用setDefaultModel/setDefaultObject?在 LoadableDetachableModel类 “负载” 或 “getmodel” 方法
添加初始化逻辑?
在onSubmit方法或onEvent的上一页中添加init。 (的onSubmit() {initBeanInSession(); setResponsePage();}
传递一个模型到面板或页面构造(使用pageparameters)
是否有任何的这些最佳做法或优于?其他
(一)页的构造码可装入可拆卸的模型:?
MyPage.java:
...
final Form form = new Form(FORM, new
CompoundPropertyModel(new LoadableDetachableModel() {
private static final long serialVersionUID = 1L;
@Override
protected MyBean load() {
final MyBean app = (MyBean) Session.get().getApp();
?????????????
?????????????
initialize here???????
?????????????
return app;
}
};
});
???
onBeforeRender() {
?? Add initiailize here
final MyBean app = (MyBean) Session.get().getApp();
app.setData(doSomeBusinessLogicHere)
}
或initModel
/**
* Called once per request on components before they are about to be rendered.
* This method should be used to configure such things as visibility and enabled flags.
*/
@Override
protected void onConfigure() {
super.onConfigure();
// Call business logic and properly set email address.
}
我在邮件列表上问过这个问题。我很高兴你们在stackoverflow上。谢谢 – 2011-03-13 05:37:51
@Martijn Dashorst我们可以从LoadableDetachableModel的load()方法抛出Exception吗?我在处理'load()'方法中引发的异常时遇到了一些问题。 – Jay 2013-02-18 16:09:36