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();
在此先感謝
請勿使用'getElementById',而使用'byId';前者不是UI5屬性 – Qualiture
我用它..但它沒有做任何改變。問題仍然存在於同一個地方。 – Javdon
如果您只是在瀏覽器中打開https://xxx.hanatrial.ondemand.com/loginpanel/jsondata.xsjs,它是否顯示正確的數據? – Qualiture