如何传递方法validate {State}参数而不是模型?
我有两个对象。 MyForm表单对象和User的对象,可以修改MyForm。
查看定义:
<view-state id="finish" view="finish" model="myform">
<transition on="submit" to="goToFinish" bind="true" validate="true" />
</view-state>
我的验证方法
private MessageContext context;
public void validateSummary(MyForm myForm, MessageContext context) throws
BusinessException {
this.context = context;
validateAddress(myForm);
....
如何验证用户的属性?没有将User设置为MyForm对象?
请帮忙。
答案 0 :(得分:2)
来自Spring Webflow Documentation:
只需创建一个名为validate${state}
的公共方法,其中${state}
是您希望运行验证的视图状态的ID(在您的示例中):
<view-state id="finish" view="finish" model="myform">
<transition on="submit" to="goToFinish" bind="true" validate="true" />
</view-state>
默认验证器将是myform
模型对象中的公共方法:
public void validateFinish( ValidationContext context ) {
...
context.getUserPrincipal() // current user
...
}
ValidationContext
允许您在验证期间获取MessageContext
来记录消息。它还公开了有关当前用户的信息,例如发出信号的userEvent
和当前用户的Principal
身份。
来自ValidationContext
API:
// The current user event that triggered validation.
java.lang.String getUserEvent()
// The current user.
java.security.Principal getUserPrincipal()
// Obtain the value entered by the current user in the UI field bound to the property provided.
java.lang.Object getUserValue(java.lang.String property)