【问题标题】:How to display server side validation errors next to formPanel fields with extjs4?如何使用 extjs4 在 formPanel 字段旁边显示服务器端验证错误?
【发布时间】:2012-02-28 01:51:02
【问题描述】:

我正在尝试使用 Extjs4 将我的类字段与我的视图字段绑定。我已经做到了可以提交表单并取回结果的程度,但不确定如果验证失败,如何在各个字段旁边显示任何错误消息。我想将这些字段直接绑定到我的类(就像我们为 spring mvc 所做的那样 - bindingResults.rejectValue("currentPassword", "currentPassword.incorrect", "Password is wrong"); 它会显示在视图中)。

我的表单面板:

{   
    xtype : 'formpanel',
    url: 'changePassword', 
    id : 'changePasswordForm', 
    method: 'POST',
    success: function(){}, 
    items : [{ 
        xtype : 'fieldset',
        id : 'passwordChange',
        title : 'Change Password',
        iconCls : 'user',
        items : [{
                xtype : 'passwordfield',
                label : 'Current Password',
                name : 'currentPassword',
                id : 'currentPassword',             
            }, {
                xtype : 'passwordfield',
                label : 'New Password'
                name : 'newPassword1',
                id : 'newPassword1',
            }, {
                xtype : 'passwordfield',
                label : 'Repeat Password',
                name : 'newPassword2',
                id : 'newPassword2',
            },]
        } ]
    },{
        xtype : 'button',
        id: 'changePassword',
    }

在按钮单击时执行提交事件的控制器 -

this.getChangePasswordForm().submit();

我的课是

@RequestMapping(value = "/changePassword", method = RequestMethod.POST)
public @ResponseBody String changePasswordInSettings(ChangePasswordForm changePasswordForm) {
    User currentUser = User.find();     

    String enteredPSHash = HashUtil
    .generateHash(changePasswordForm.getCurrentPassword(),
    currentUser.getEmail());    

    String existingPSHash = currentUser.getPassword();  

    if(!enteredPSHash.equals(existingPSHash)) {
        //bindingResults.rejectValue("currentPassword",
        //"currentPassword.incorrect", "Password is incorrect"); 
    } 
    if (!changePasswordForm.getNewPassword1().equals(changePasswordForm.getNewPassword2())) { 
        //bindingResults.rejectValue("newPassword2",
        //  "newPassword2.dontMatch", "Passwords dont match");
    }
    //if (!bindingResults.hasErrors()) { 
        String newPSHash = HashUtil.generateHash(changePasswordForm.getNewPassword1(),currentUser.getEmail()); 
        currentUser.setPassword(newPSHash); 
        //model.addAttribute("successful", new Boolean(true));      //}
    return "success";
}

如何在我的视图中显示错误消息?

【问题讨论】:

    标签: extjs4 extjs-mvc server-side-validation


    【解决方案1】:

    感谢您提出这个问题。我不知道这个功能,但是可以使用 errorReader 配置 Form 组件(请参阅docs) 有一个此功能的工作示例可以帮助您进行设置: http://dev.sencha.com/deploy/ext-4.0.0/examples/form/xml-form.html

    【讨论】:

      【解决方案2】:

      我有 Ext.form.Panel:

      id: 'any-id',
      conroller: 'controller-id',
      items: [
              {
                  fieldLabel: 'Field1',
                  name: 'field1',
              },
              {
                  fieldLabel: 'Field2',
                  name: 'field2',
              }
          ],
      
          buttons: [
              {
                  text:'Click Me',
                  itemId: 'buttonId',
                  handler: 'onButtonClick'
              }
          ]
      

      在控制器 ID 中:

      onButtonClick: function(button) {
          var window = Ext.getCmp('any-id');    
          Ext.Ajax.request({
                      url: 'url',
                      method : "POST",
                      headers: {
                          'Content-Type': 'application/json'
                      },
                      jsonData: window.getForm().getValues(),
                      useDefaultXhrHeader : false,
                      withCredentials: false,
                      success : function(form, action) {
                         var response = Ext.JSON.decode(form.responseText);
                         var puke = response.status.puke;
      
                         for (var key in puke) {
                             form.findField(key).markInvalid(puke[key]);
                         }
                      }
          }
      }
      

      和来自服务器的 json:

      {
        "status" : {
          "code" : 100,
          "message" : "Validation error."
          "puke" : [{"field1:", "Error message."}, {"field2:", "Another error message."}]
        }
      }
      

      【讨论】:

      • 请在您的代码中添加一些说明,说明它的作用和作用
      猜你喜欢
      • 2014-10-30
      • 2012-02-17
      • 2012-06-12
      • 2012-06-29
      • 1970-01-01
      • 1970-01-01
      • 2013-02-26
      • 2017-03-03
      相关资源
      最近更新 更多