extjs使用Ext.DIrect表单提交

时间:2012-06-22 13:44:46

标签: javascript extjs4

我想使用Ext.Direct提交表单,iam遵循文档中的所有指导原则仍然会出现这种奇怪的错误

Error: Ext.data.Connection.setOptions(): No URL specified

这是我表单的javascript代码

Ext.define('LOGIN.view.SignIn', {
    extend: 'Ext.form.Panel',
    alias: 'widget.signin',
    title: 'Sign-In',
    items: [{
        xtype: 'textfield',
        name: 'UserName',
        fieldLabel: 'UserName',
        allowBlank: 'false'
    }, {
        xtype: 'textfield',
        name: 'Password',
        fieldLabel: 'Password',
        allowBlank: 'false',
        inputType: 'password'
    }],
    buttons: [{
        text: 'Sign-In',
        handler: function () {
            this.up('form').getForm().submit({});
        }
    }, {
        text: 'Sign-Up -->',
        disabled: true,
        handler: function () {
            this.up('#LoginPanel').getLayout().setActiveItem(1);
        }
    }],
    api: {
        submit: LogIn.SignIn
    }
})

我应该改变什么?

2 个答案:

答案 0 :(得分:2)

我找到了解决框架的答案 我需要使用以下代码并在构造函数中定义api,因为我猜这个特定的intialConfig不会自动生成

这是代码

Ext.define('LOGIN.view.SignIn', {
    extend: 'Ext.form.Panel',
    alias: 'widget.signin',
    title: 'Sign-In',
    constructor: function (config) {
        Ext.applyIf(config, {
            // defaults for configs that should be passed along to the Basic form constructor go here
            api: {
                submit:LogIn.SignIn
            }
        });
        this.callParent(arguments);
    },
    items: [{
        xtype: 'textfield',
        name: 'UserName',
        fieldLabel: 'UserName',
        allowBlank: 'false'
    }, {
        xtype: 'textfield',
        name: 'Password',
        fieldLabel: 'Password',
        allowBlank: 'false',
        inputType: 'password'
    }],
    buttons: [{
        text: 'Sign-In',
        handler: function () {
            this.up('form').getForm().submit();
        }
    },
        {
            text: 'Sign-Up -->',
            disabled: true,
            handler: function () {
                this.up('#LoginPanel').getLayout().setActiveItem(1);
            }
        }]
})

答案 1 :(得分:0)

有一件事需要注意。

如果您使用extdirectspring,则需要使用以下方法注释服务器端方法:

@ExtDirectMethod(ExtDirectMethodType.FORM_POST)
public ExtDirectFormPostResult doStuff(AddAttachmentRequest request)
{
    return null;
}

同样必须使用ExtDirectFormPostResult。如果你不这样做就不会工作。

如果您使用normaly extdirect方法,则不会发送任何文件数据。

在另一端看起来你需要的类型是MultipartFile,例如:

public class AddAttachmentRequest {

    private long id;
    private MultipartFile file;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public MultipartFile getFile() {
        return file;
    }

    public void setFile(MultipartFile file) {
        this.file = file;
    }
}