请考虑以下情景。 有一个网页一些持久对象obj
:挂毯5:永久页面数据的初始化
public class SomePage {
@Persistent
@Property
SomeBean obj;
@Property
@PageActivationContext
private SomeActivation actObj;
...
void onValidateFromForm() { ... }
}
这obj
是在页面上编辑:
<t:textfield t:id="value" t:value="obj.value"/>
让我们考虑这样的obj
状态初始化程序:
(*)obj.value = actObj.value;
(我强烈需要解除value
从actObj
,请不要问为什么)。
也有验证方法。当验证失败时,我想在页面上显示错误列表并保留所有值,这些用户填写在表单上并存储在obj
中。
所以:
- 当页面与特定的
actObj
首先初始化我想初始化obj
- 当页面验证失败,我不想重新初始化
obj
,因为我想保留自己的价值观并向用户显示错误列表。
的问题是:我应该把初始化块(*)?
不,这是行不通的。当我在'onValidateFromForm()'之前改变这个对象的状态时,它总是会从数据库中重新初始化对象的状态,所以我所有的改变都会继续。 – Andremoniy
你确定吗?该值将从数据库中查找,但会立即被请求参数中的字段值覆盖。 –