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