2016-08-19 83 views
0

我正在构建一个最初具有登录页面的应用程序。我试图创建一个场景,其中输入的登录用户名和密码应该与存储在jsondata.xsjs文件中的用户名和密码进行比较(jsondata.xsjs文件从后端实现的hana表中获取数据)。SAPUI5应用程序的登录页面

但问题是jsonModel没有从jsondata.xsjs中获取用户名和密码的数据。为了验证这一点,我通过在onInit()方法中绑定了jsonModel数据和Table来设置登录按钮的警报。但它显示#user在alert中,而不是显示jsonModel中的数据。

下面的代码:

loginpanel.view.js

sap.ui.jsview("test1.loginpanel", { 

getControllerName : function() { 
    return "test1.loginpanel"; 
}, 

createContent : function(oController) { 


     var box = new sap.m.FlexBox({ 
      alignItems: sap.m.FlexAlignItems.Stretch, 
      items: [ 
       new sap.m.Label({ 
        text: "Voyager", 
        design: sap.m.LabelDesign.Bold 
       }), 
       new sap.m.Input({ 
        id:"username_1", 
        placeholder: "username" 
       }), 
       new sap.m.Input({ 
        id: "password_1", 
        type: sap.m.InputType.Password, 
        placeholder: "password" 
       }), 
       new sap.m.Button({ 
        text: "Login", 
        press: function() { 
        oController.sendForm(); 
        } 
       }) 
      ], 
      direction: "Column" 
     }).setAlignItems("Center").setWidth("100%"); 

     return box; 

       } 
      }); 

loginpanel.controller.js

sap.ui.controller("test1.loginpanel", { 

    onInit: function(){ 
    var oModel = new sap.ui.model.json.JSONModel("https://xxx.hanatrial.ondemand.com/loginpanel/jsondata.xsjs", false); 
    sap.ui.getCore().setModel(oModel); 

    var oTable = new sap.ui.table.Table({ 
       editable: false 
      }); 
       oTable.addColumn(new sap.ui.table.Column({ 
      label: new sap.ui.commons.Label({text: "username"}), 
      template: new sap.ui.commons.TextField("user").bindProperty("value", "USERNAME"), 
      sortProperty: "USERNAME", 
      editable: false 
     })); 

     oTable.addColumn(new sap.ui.table.Column({ 
      label: new sap.ui.commons.Label({text: "password"}), 
      template: new sap.ui.commons.TextField().bindProperty("value", "PASSWORD"), 
      sortProperty: "PASSWORD", 
      editable: false 
     })); 
     oTable.setModel(oModel); 
     oTable.bindRows("/UserSet"); 

    }, 
    sendForm: function() 
{ 
    var username = sap.ui.getCore().getElementById("username_1").getValue(); 
    alert("username is "+username); 
    var password = sap.ui.getCore().getElementById("password_1").getValue(); 
    alert("password is "+password); 
    var username1 = sap.ui.getCore().getElementById("user").getValue(); 
    alert("username is "+username1); 
    } 
    }); 

jsondata.xsjs

var select_all_personals_query = "select * from ADMIN.USER"; 
    function close(closables) { 
     var closable; 
     var i; 
     for (i = 0; i < closables.length; i++) { 
       closable = closables[i]; 
       if(closable) { 
          closable.close(); 
       } 
     } 
    } 
    function getDataPersonals(){ 
     var x1 = { 
      UserSet: str 
      }; 
     var dataPersonalsList = []; 
     var connection = $.db.getConnection(); 
     var statement = null; 
     var resultSet = null; 
     try{ 
       statement = connection.prepareStatement(select_all_personals_query); 
       resultSet = statement.executeQuery(); 
       var dataPersonal; 

       while (resultSet.next()) { 
          dataPersonal = {}; 
          dataPersonal.USERNAME = resultSet.getString(2); 
          dataPersonal.PASSWORD = resultSet.getString(3); 

          dataPersonalsList.push(dataPersonal); 
       } 
     } finally { 
       close([resultSet, statement, connection]); 
     } 
//JSON.stringify(obj);  // '"bar"' 
//JSON.stringify({ x: obj }); // '{"x":"bar"}'   
      var str = JSON.stringify({UserSet: dataPersonalsList}); 
    return str; 
} 
    function doGet() { 
     try{ 
       $.response.contentType = "application/json"; 
       $.response.setBody(getDataPersonals());    
     } 
     catch(err){ 
       $.response.contentType = "text/plain"; 
       $.response.setBody("Error while executing query: [" + err.message + "]"); 
       $.response.returnCode = 200; 
     } 
} 
doGet(); 

在此先感谢

+0

请勿使用'getElementById',而使用'byId';前者不是UI5属性 – Qualiture

+0

我用它..但它没有做任何改变。问题仍然存在于同一个地方。 – Javdon

+0

如果您只是在浏览器中打开https://xxx.hanatrial.ondemand.com/loginpanel/jsondata.xsjs,它是否显示正确的数据? – Qualiture

回答

0

我的应用程序开始工作时,我使用了按()函数中下面的代码利用的登录/注销功能在SAP HANA平台上点击按钮:

press: function(){ 
$.ajax({url:"/sap/hana/xs/formLogin/token.xsjs",type:"GET",beforeSend:function(e){e.setRequestHeader("X-CSRF-Token","Fetch")},success:function(e,s,o){var n=o.getResponseHeader("X-CSRF-Token");$.ajax({url:"/sap/hana/xs/formLogin/logout.xscfunc",type:"POST",beforeSend:function(e){e.setRequestHeader("X-CSRF-Token",n)},success:function(){sap.m.MessageToast.show("Successfully Logged Out"),window.location.reload()}})}}); 
} 

它适用于登录/注销应用程序。