zoukankan      html  css  js  c++  java
  • UI5-学习篇-13-Eclipse 开发UI5应用

    1.Eclipse环境配置及组件安装

     UI5-学习篇-1-Eclipse开发工具及环境搭建

    2.创建项目

     

     

      

    3.设置代理映射

     打开WebContent->WEB-INF->web.xml文件,设置代理地址: 

        <servlet>
            <servlet-name>SimpleProxyServlet</servlet-name>
            <servlet-class>com.sap.ui5.proxy.SimpleProxyServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>SimpleProxyServlet</servlet-name>
            <url-pattern>/proxy/*</url-pattern>
        </servlet-mapping>
        <context-param>
            <param-name>com.sap.ui5.proxy.REMOTE_LOCATION</param-name>
            <param-value>http://XXX.XXXXX.com:8000</param-value>
        </context-param>

    4.WebContent文件设置

     在WebContent文件夹下创建如下文件夹:

     controller:JavaScript应用层逻辑控制

     css:样式设置

     i18n:多语言设置

     localService:元数据文件

     model:数据层

     view:视图展现层

     

    5.创建View及Controller

     选择view文件夹,创建view视图文件

     view -右键 New - other- 选择SAPUI5 Application Development - View

     

     

     视图设计目前有四种类型:JavaScript,XML,JSON,HTML,根据个人习惯进行选择,目前官网实例大多采用XML格式去设计,可以多了解XML。

     创建完成后,View文件夹会生成两个文件:MAT.controller.js    /  MAT.view.xml

     将MAT.controller.js文件拖放到controller文件夹下面,如下所示:

      

     MAT.view视图代码如下:

     
    <mvc:View 
        controllerName="zrico_ecp_ui.controller.MAT" 
        xmlns:html="http://www.w3.org/1999/xhtml" 
        xmlns:mvc="sap.ui.core.mvc"
        xmlns:core="sap.ui.core" 
        xmlns:form="sap.ui.layout.form"
        displayBlock="true" xmlns="sap.m">
        <App>
            <pages>
                <Page title="{i18n>app_header_title}" id="PG_SEARCH">
                <content>
                    <Panel    
                        xmlns:html="http://www.w3.org/1999/xhtml" 
                        xmlns:mvc="sap.ui.core.mvc" 
                        xmlns="sap.m" 
                        id="__panel0" 
                        headerText="{i18n>app_panel_title}">
                        <content>
                        <form:Form 
                            xmlns:html="http://www.w3.org/1999/xhtml" 
                            xmlns:mvc="sap.ui.core.mvc" 
                            xmlns="sap.m" 
                            xmlns:sap.ui.layout.form="sap.ui.layout.form" 
                            editable="true" 
                            id="__form2">
                            <form:formContainers>
                                <form:FormContainer 
                                    id="__container2">
                                    <form:formElements>
                                        <form:FormElement 
                                            id="__element2" 
                                            label="{i18n>app_panel_lable_usrid}">
                                            <form:fields>
                                                <Input 
                                                    id="productInput" 
                                                    type="Text" 
                                                    width="auto" 
                                                    textFormatMode="KeyValue" 
                                                    placeholder="Enter User ID..." 
                                                    showSuggestion="true" 
                                                    showValueHelp="true" 
                                                    valueHelpRequest="handleValueHelp" 
                                                    suggestionItems="{/ZUSERSet}" 
                                                    suggestionItemSelected="suggestionItemSelected">
                                                    <suggestionItems>
                                                        <core:ListItem key="{Usrid}" text="{Usrname}" additionalText="{Usrid}"/>
                                                    </suggestionItems>
                                                </Input>
                                                <Button 
                                                    xmlns:html="http://www.w3.org/1999/xhtml" 
                                                    xmlns:mvc="sap.ui.core.mvc" 
                                                    xmlns="sap.m" 
                                                    width="auto" 
                                                    type="button"
                                                    id="app_panel_button_read" 
                                                    icon="sap-icon://search" 
                                                    text="{i18n>app_panel_button_search}" 
                                                    press="onRead"/>
                                                
                                            </form:fields>
                                            
                                        </form:FormElement>
                                        
                                    </form:formElements>
                                    
                                </form:FormContainer>
                                
                            </form:formContainers>
                            <form:layout>
                                <form:ResponsiveGridLayout 
                                    id="__layout2"/>
                            </form:layout>
                            </form:Form>
                    </content>
                    </Panel>
                    <Table xmlns:html="http://www.w3.org/1999/xhtml" xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m" noDataText="No data" id="idTable" items="{path:'/ZUSERSet'}">
                        <items>
                            <ColumnListItem type="Navigation" press="onItemPress">
                                <cells>
                                    <Text text="{Usrid}"/>
                                    <Text text="{Usrname}"/>
                                    <Text text="{Usraddr}"/>
                                </cells>
                            </ColumnListItem>
                        </items>
                        <columns>
                            <Column id="__column0">
                                <header>
                                    <Label id="lUsrid" text="{i18n>app_table_header_usrid}"/>
                                </header>
                            </Column>
                            <Column id="__column1">
                                <header>
                                    <Label text="{i18n>app_table_header_usrname}" id="lUsrname"/>
                                </header>
                            </Column>
                            <Column id="__column2">
                                <header>
                                    <Label text="{i18n>app_table_header_usraddr}" id="lUsraddr"/>
                                </header>
                            </Column>
                            </columns>
                        </Table>
                </content>
                   <footer>
                        <Bar>
                            <contentRight>
                                <Button icon="sap-icon://create" text="Create" press="onCreate"/>
                                <Button icon="sap-icon://edit" text="Edit" press="onEdit"/>
                                <Button icon="sap-icon://delete" text="Delete" press="onDelete"/>
                            </contentRight>
                        </Bar>
                    </footer>
                </Page>
            </pages>
        </App>
    </mvc:View>
    View Code

     MAT.controller代码如下(注意替换文件中user/password):

    sap.ui.define([
        "sap/ui/core/mvc/Controller",
        'sap/ui/model/Filter',
        "sap/ui/model/json/JSONModel"
    ], function(Controller,Filter,JSONModel) {
        "use strict";
        var oModel;
        var rModel;
        var oAjax;
        var aFilters;
        var sCurrentPath; // current path
        var sCurrentUsr;  // cureent user
        var sServiceUrl;
        
        return Controller.extend("zrico_ecp_ui.controller.MAT", {
            inputId: '',
            
            onInit: function() {
    //              oModel = this.getOwnerComponent().getModel();           
    //              oModel.setUseBatch(false);
    //              this.getView().setModel(oModel);
                
                    oModel = new sap.ui.model.odata.ODataModel("proxy/sap/opu/odata/sap/ZRICO_STRU_USR_SRV/",{
                    json: true,
                    user: "XXXX",
                    password: "XXXXX"
                });
                
                oModel.setUseBatch(false);
                this.getView().setModel(oModel);
            },
            
            onRead:function(){
                var sInputValue = this.getView().byId("productInput").getSelectedKey();
                // define filters
                if ( sInputValue === ""){
                aFilters = [    new Filter("Usrid", 
                        sap.ui.model.FilterOperator.Contains,
                        sInputValue) ];
                }
                else{
                aFilters = [    new Filter("Usrid", 
                        sap.ui.model.FilterOperator.EQ,
                        sInputValue)];
                }    
        
                // get data using filter
                oModel.read("/ZUSERSet", {
                    filters: aFilters,     
                    success: function(oData, oResponse){
                        //window.console.log(oData);
                    }
                });
                
                var oList = this.getView().byId("idTable");
                var oBinding = oList.getBinding("items");
                oBinding.filter(aFilters);
                
            },
            
            openDialog: function() {
                var oView = this.getView();
                // Open dialog
                var oUsrDialog = oView.byId("UsrDialog");
                if (!oUsrDialog) {
                    oUsrDialog = sap.ui.xmlfragment(oView.getId(),
                        "zrico_ecp_ui.view.UsrDialog");
                    oView.addDependent(oUsrDialog);
                }
                oUsrDialog.open();
                // Attach press event for CancelButton
                var oCancelButton = oView.byId("CancelButton");
                oCancelButton.attachPress(function() {
                    oUsrDialog.close();
                });
            },
            
            // onCreate event
            onCreate: function() {
                sap.m.MessageToast.show("Create starting.");
                var oView = this.getView();
                this.openDialog();
                var oUsrDialog = oView.byId("UsrDialog");
                oUsrDialog.setTitle("Create User");
                oView.byId("Usrid").setEditable(true);
                oView.byId("SaveEdit").setVisible(false);
                oView.byId("SaveCreate").setVisible(true);
                // clear
                oView.byId("Usrid").setValue("");
                oView.byId("Usrname").setValue("");
                oView.byId("Usraddr").setValue("");
                // commit save
                oView.byId("SaveCreate").attachPress(function() {
                    var oNewEntry = {
                        "Mandt": "300",
                        "Usrid": "",
                        "Usrname": "",
                        "Usraddr": ""
                    };
                    // populate value from form
                    oNewEntry.Usrid   = oView.byId("Usrid").getValue();
                    oNewEntry.Usrname = oView.byId("Usrname").getValue();
                    oNewEntry.Usraddr = oView.byId("Usraddr").getValue();
                    
                    if(!oNewEntry.Usrid){
                        sap.m.MessageToast.show("Please input the value of Usrid");
                        return;
                    }else{
                        // Commit creation operation
                        oModel.create("/ZUSERSet", oNewEntry, {
                            success: function() {
                                sap.m.MessageToast.show("Created successfully.");
                            },
                            error: function(oError) {
                                window.console.log("Error", oError);
                            }
                        });
                    }
    
                    // close dialog
                    if (oUsrDialog) {
                        oUsrDialog.close();
                    }
                });
            },
            
            //onEdit event
            onEdit: function() {
                // no Item was selected
                if (!sCurrentUsr) {
                    sap.m.MessageToast.show("No Item was selected.");
                    return;
                }
                var oView = this.getView();
                this.openDialog();
                var oUsrDialog = oView.byId("UsrDialog");
                oUsrDialog.setTitle("Edit User");
                oView.byId("Usrid").setEditable(false);
                oView.byId("SaveEdit").setVisible(true);
                oView.byId("SaveCreate").setVisible(false);
                // populate fields
                oView.byId("Usrid").setValue(oModel.getProperty(sCurrentPath + "/Usrid"));
                oView.byId("Usrname").setValue(oModel.getProperty(sCurrentPath + "/Usrname"));
                oView.byId("Usraddr").setValue(oModel.getProperty(sCurrentPath + "/Usraddr"));
                // Attach save event
                oView.byId("SaveEdit").attachPress(function() {
                    var oChanges = {
                        "Mandt": "300",
                        "Usrid":"",
                        "Usrname": "",
                        "Usraddr": ""
                    };
                    // populate value from form
                    oChanges.Usrid =  oView.byId("Usrid").getValue();
                    oChanges.Usrname = oView.byId("Usrname").getValue();
                    oChanges.Usraddr = oView.byId("Usraddr").getValue();
                    // commit creation
                    oModel.update(sCurrentPath, oChanges, {
                        success: function() {
                            sap.m.MessageToast.show("Changes were saved successfully.");
                        },
                        error: function(oError) {
                            window.console.log("Error", oError);
                        }
                    });
                    // close dialog
                    if (oUsrDialog) {
                        oUsrDialog.close();
                    }
                });
            },
            // onDelete event
            onDelete: function() {
                var that = this;
                // no Item was selected
                if (!sCurrentUsr) {
                    sap.m.MessageToast.show("No Item was selected.");
                    return;
                }
                var oDeleteDialog = new sap.m.Dialog();
                oDeleteDialog.setTitle("Deletion");
                var oText = new sap.m.Label({
                    text: "Are you sure to delete UsrId [" + sCurrentUsr + "]?"
                });
                oDeleteDialog.addContent(oText);
                oDeleteDialog.addButton(
                    new sap.m.Button({
                        text: "Confirm",
                        press: function() {
                            that.deleteUsr();
                            oDeleteDialog.close();
                        }
                    })
                );
                oDeleteDialog.open();
            },
            // deletion operation
            deleteUsr: function() {
                oModel.remove(sCurrentPath, {
                    success: function() {
                        sap.m.MessageToast.show("Deletion successful.");
                    },
                    error: function(oError) {
                        window.console.log("Error", oError);
                    }
                });
            },
    
            onItemPress: function(evt) {
                var oContext = evt.getSource().getBindingContext();
                sCurrentPath = oContext.getPath();
                sCurrentUsr = oContext.getProperty("Usrname");
            },
            
            //Input usrid value help
            handleValueHelp : function (oEvent) {
                var sInputValue = oEvent.getSource().getValue();
    
                this.inputId = oEvent.getSource().getId();
                // create value help dialog
                if (!this._valueHelpDialog) {
                    this._valueHelpDialog = sap.ui.xmlfragment(
                        "zrico_ecp_ui.view.InputUsridDialog",
                        this
                    );
                    this.getView().addDependent(this._valueHelpDialog);
                }
    
                // create a filter for the binding
                this._valueHelpDialog.getBinding("items").filter([new Filter(
                    "Usrname",
                    sap.ui.model.FilterOperator.Contains, sInputValue
                )]);
    
                // open value help dialog filtered by the input value
                this._valueHelpDialog.open(sInputValue);
            },
            
            _handleValueHelpSearch : function (evt) {
                var sValue = evt.getParameter("value");
                var oFilter = new Filter(
                    "Usrname",
                    sap.ui.model.FilterOperator.Contains, sValue
                );
                evt.getSource().getBinding("items").filter([oFilter]);
            },
    
            _handleValueHelpClose : function (evt) {
                var oSelectedItem = evt.getParameter("selectedItem");
                if (oSelectedItem) {
                    var productInput = this.byId(this.inputId),
                        //oText = this.byId('selectedKey'),
                        sDescription = oSelectedItem.getDescription();
    
                    productInput.setSelectedKey(sDescription);
                    //oText.setText(sDescription);
                }
                evt.getSource().getBinding("items").filter([]);
            },
            
            suggestionItemSelected: function (evt) {
                var oItem = evt.getParameter('selectedItem'),
                    //oText = this.byId('selectedKey'),
                    sKey = oItem ? oItem.getKey() : '';
                //oText.setText(sKey);
            }
        });
    });
    View Code

     6.创建Fragment

     创建两个对话框:InputUsridDialog  / UsrDialog

     选中view视图,右键New ,File

     

     

     InputUsridDialog.fragment.xml代码部分:

     
    <core:FragmentDefinition
        xmlns="sap.m"
        xmlns:core="sap.ui.core">
        <SelectDialog
            title="{i18n>inputusriddialog_header_title}"
            class="sapUiPopupWithPadding"
            items="{/ZUSERSet}"
            search="_handleValueHelpSearch"
            confirm="_handleValueHelpClose"
            cancel="_handleValueHelpClose">
            <StandardListItem
                title="{Usrid}{Usrname}"
                description="{Usrid}" />
        </SelectDialog>
    </core:FragmentDefinition>
    View Code

     UsrDialog.fragment.xml代码部分:

     
    <core:FragmentDefinition xmlns="sap.m" xmlns:core="sap.ui.core" xmlns:f="sap.ui.layout.form">
        <Dialog id="UsrDialog" title="{i18n>usrdialog_header_title}">
            <f:SimpleForm>
                <Label text="{i18n>usrdialog_lable_usrid}"/>
                <Input id="Usrid" value="{Usrid}"/>
                <Label text="{i18n>usrdialog_lable_usrname}"/>
                <Input id="Usrname" value="{Usrname}"/>
                <Label text="{i18n>usrdialog_lable_usraddr}"/>
                <Input id="Usraddr" value="{Usraddr}"/>
            </f:SimpleForm>
            <Toolbar>
                <ToolbarSpacer/>
                <Button id="SaveCreate" text="Save"/>
                <Button id="SaveEdit" text="Save Edit"/>
                <Button id="CancelButton" text="Cancel"/>
            </Toolbar>
        </Dialog>
    </core:FragmentDefinition>
    View Code

    7.多语言文件i18n

     i18n文件夹下创建文件i18n.properties

     选择文件夹i18n,右键New - File,创建文件名i18n.properties,如下图:

     

     i18n.properties内容如下:

      
    app_header_title=用户信息查询
    app_panel_title=查询条件
    app_panel_lable_usrid=用户ID
    app_panel_button_search=查询
    app_table_header_usrid=用户ID
    app_table_header_usrname=用户名称
    app_table_header_usraddr=用户地址
    usrdialog_header_title=用户信息维护 
    usrdialog_lable_usrid=用户ID
    usrdialog_lable_usrname=用户名称
    usrdialog_lable_usraddr=用户地址
    usrdialog_button_savecreate=保存
    usrdialog_button_saveedit=保存修改
    usrdialog_button_cancel=取消
    inputusriddialog_header_title=用户ID选择
    View Code

    8.mainfest配置文件

     mainfest.json配置文件

     
    {
        "_version": "1.7.0",
        "sap.app": {
            "id": "zrico_ecp_ui",
            "type": "application",
            "i18n": "i18n/i18n.properties",
            "applicationVersion": {
                "version": "1.0.0"
            },
            "title": "{{appTitle}}",
            "description": "{{appDescription}}",
            "sourceTemplate": {
                "id": "servicecatalog.connectivityComponent",
                "version": "0.0.0"
            },
            "dataSources": {
                "ZRICO_STRU_USR_SRV": {
                    "uri": "/sap/opu/odata/sap/ZRICO_STRU_USR_SRV/",
                    "type": "OData",
                    "settings": {
                        "odataVersion": "2.0",
                        "localUri": "localService/metadata.xml"
                    }
                },
                "ajaxUser":{
                    "uri": "./model/ajaxinfo.json",
                    "type": "JSON"
                }
            }
        },
        "sap.ui": {
            "technology": "UI5",
            "icons": {
                "icon": "",
                "favIcon": "",
                "phone": "",
                "phone@2": "",
                "tablet": "",
                "tablet@2": ""
            },
            "deviceTypes": {
                "desktop": true,
                "tablet": true,
                "phone": true
            },
            "supportedThemes": [
                "sap_hcb",
                "sap_belize"
            ]
        },
        "sap.ui5": {
            "rootView": {
                "viewName": "zrico_ecp_ui.view.MAT",
                "type": "XML"
            },
            "dependencies": {
                "minUI5Version": "1.30.00",
                "libs": {
                    "sap.collaboration": {},
                    "sap.m": {},
                    "sap.ui.comp": {},
                    "sap.ui.core": {},
                    "sap.ui.layout": {},
                    "sap.ushell": {},
                    "sap.uxap": {}
                }
            },
            "contentDensities": {
                "compact": true,
                "cozy": true
            },
            "models": {
                "i18n": {
                    "type": "sap.ui.model.resource.ResourceModel",
                    "settings": {
                        "bundleName": "zrico_ecp_ui.i18n.i18n"
                    }
                },
                "ajaxinfo": {
                    "type": "sap.ui.model.json.JSONModel",
                    "dataSource": "ajaxUser"
                 },
                "": {
                    "type": "sap.ui.model.odata.v2.ODataModel",
                    "settings": {
                        "defaultOperationMode": "Server",
                        "defaultBindingMode": "OneWay",
                        "defaultCountMode": "Request"
                    },
                    "dataSource": "ZRICO_STRU_USR_SRV",
                    "preload": true
                }
            },
            "resources": {
                "css": [
                    {
                        "uri": "css/style.css"
                    }
                ]
            }
        },
        "sap.platform.abap": {
            "uri": "/sap/bc/ui5_ui5/sap/zrico_ui5",
            "_version": "1.1.0"
        }
    }
    View Code

    9.index.html启动页面 

     
    <!DOCTYPE HTML>
    <html>
    
        <head>
            <meta http-equiv="X-UA-Compatible" content="IE=edge" />
            <meta charset="UTF-8">
    
            <title>ZRICO_UI5_TEST</title>
    
            <script id="sap-ui-bootstrap"
                src="resources/sap-ui-core.js"
                data-sap-ui-libs="sap.m"
                data-sap-ui-theme="sap_belize"
                data-sap-ui-compatVersion="edge"
                data-sap-ui-resourceroots='{"zrico_ecp_ui": ""}'>
            </script>
    
            <link rel="stylesheet" type="text/css" href="css/style.css">
    
            <script>
                var serviceUrl = getServiceUrl("/mypath/myservice");
                function getServiceUrl(sServiceUrl) {
                  if (window.location.hostname == "localhost") {
                      return "proxy" + sServiceUrl;
                  } else {
                      return sServiceUrl;
                  }
                }
            </script>        
            
            <script>
                sap.ui.getCore().attachInit(function() {
                    new sap.m.Shell({
                        app: new sap.ui.core.ComponentContainer({
                            height : "100%",
                            name : "zrico_ecp_ui"
                        })
                    }).placeAt("content");
                });
            </script>
        </head>
    
        <body class="sapUiBody" id="content">
        </body>
    
    </html>
    View Code

    10.Tomcat执行测试

     选中项目名,右键Run As - Run on Server

     

     执行后: 

     创建:

      

     修改:

     

     

     删除:

     

     

    11.Chrome浏览器调试

     打开浏览器chrome,输入路径:http://localhost:9090/zrico_ecp_ui/,然后快捷键F12打开调试控制台 

     

     

     

     

     

  • 相关阅读:
    Mysql事务的隔离级别,ACID以及三要素的取舍(强一致性弱一致性)、ABA问题
    符合python风格的对象
    python重载运算符之左add右add(radd)
    pycham快捷键
    设置linux时间同步
    描述克隆linux的步骤,以及后续配置
    linux命令
    ransientException: find no Route:SELECT * FROM `ego`.`tb_content_category` LIMIT 0,1000‘
    linux修改vim /etc/profile 配置文件 修改不了
    web.xml
  • 原文地址:https://www.cnblogs.com/ricoo/p/10458078.html
Copyright © 2011-2022 走看看