SAPUI5从OData请求获取用户名/用户ID

时间:2014-08-29 12:52:55

标签: odata username sapui5

我目前正在关注一个我认为很容易解决的问题。但我没有。有些控件允许我们显示用户名或登录用户,例如可爱的 shell-headitems

var oShell = new sap.ui.ux3.Shell("myShell", {
    headerItems: [
                new sap.ui.commons.TextView({
                text: oController.getUserName() }),
                 ],
});

看起来像这样:

Header Item top right (currently a string)

在这里我们定义headerItems,我认为这是为了显示用户名/或当前登录的用户。但我怎么才能收到呢?我的想法是从之前提出的odata请求中获取它。它要求我输入用户名和密码 - >因此,我想在 controller-method 读取此用户名,但是如何?

getUserName : function() {
        // return navigator.userAgent;
        var model = sap.ui.getCore().getModel();
        return model.getProperty('sUser'); // doesnt work :(
},

我也尝试从navigator.userAgent()获取它,但此信息不属于用户。 谁知道怎么收到它? 是的:我在谷歌搜索并发现一些线程讨论用户/登录但这些线程都没有解决我的问题。否则我想过将sy-uname从SAP转移到前端,但你怎么能发送一个文本?我不想为这个单一的交易建立一个完整的服务......谢谢!!

最终信息:如果在oData-Model-Initialization期间未提供sUser和sPassword,则在运行时它将为空。你不能从模型中访问它,虽然我为此实现了自己的服务..无论如何,感谢Allen!

1 个答案:

答案 0 :(得分:3)

用户名位于ODataModel的sap.ui.model.odata.ODataMetadata

var getUserName = function() {
    var model = sap.ui.getCore().getModel();
    var sUser = model.oMetadata.sUser;
    // Display user logic here.
};

oModel.attachMetadataLoaded(null,getUserName);

更新来自zyrex的评论问题的答案:

var user = new sap.ui.commons.TextView();

var getUserNameCallBack = function(userName) {
    user.setText(userName);
}

oController.getUserName(getUserNameCallBack);

控制器方法:

getUserName: function(callback) {
    var userName = '';

    $.getJSON(sServiceUrl).done(function(data) {
        userName = data.d.Name;
        callback(userName);

    });
}