2015-07-11 83 views
2

您好我是Griffon Framework中的新成员我想在我的应用程序中添加登录功能。按照是我的模型,视图和控制器:Griffon更新模型和从控制器查看

SignInModel.groovy

@ArtifactProviderFor(GriffonModel) 
@griffon.transform.Validateable 
class SignInModel { 
    @Bindable String userName 
    @Bindable String password 
static CONSTRAINTS = { 
    userName(blank: false,nullable: false) 
    password(blank: false, nullable: false) 
} 

}

SignInView.groovy

@ArtifactProviderFor(GriffonView) 

类SignInView {

FactoryBuilderSupport builder 
SignInModel model 
SignInController controller 
void initUI() { 
builder.with { 
     application{ 
frame(title: 'Login', size: [330, 230], 
        show: true,resizable:false,locationRelativeTo: null, 
        defaultCloseOperation: EXIT_ON_CLOSE) { 
       panel(constraints: BorderLayout.CENTER, 
         border: compoundBorder([emptyBorder(10),titledBorder('Welcome To Tracker')])) { 
tableLayout() { 
         tr { 
          td { 
           label(text: "Username") 
          } 
          td { 
           textField(id: "usernameTxt", columns: 15, text: bind(target: model, 'userName', mutual: true)) 
          } 
         } 
         tr{ 
          td{ 
           label(text:"Password") 
          } 
          td{ 
           passwordField(id:"passwordTxt",columns:15,text:bind(target:model,'password',mutual:true)) 

          } 
         } 
        } 
       } 
panel(constraints: BorderLayout.SOUTH) { 
        button text: 'Login', actionPerformed: { 
         model?.getErrors()?.clearAllErrors() 
         controller.signIn() 
        } 
       } 
} 
      } 
     } 
} 
} 

}

SignInController.groovy

@ArtifactProviderFor(GriffonController) 

类SignInController {

SignInModel model 
SignInView view 
void signIn(){ 
    try { 
if (model?.validate()) { 
      println("No Error Found..") 
     } else { 
    println("Error Found..") 
     } 
}catch (Exception ex){ 
     println("Exception Generated:>>>>>>>>>>>>>>"+ex?.getMessage()) 
    } 
} 

}

我想更新我的登入查看如果用户名和密码是空的,错误信息。我能够在我的模型中获取错误消息,但我的视图不会更新,请帮助我。

@Note:我已经加入格里芬验证插件

回答

1

你必须处理validateable(模型实例)的errors财产。该属性包含可用于向用户显示信息的消息列表,但您必须选择哪些消息,因为可能有很多消息。您的当前代码与此相距一步,因为它已经触发了验证;现在只需要消费这些消息并将其呈现在UI中。

相关问题