Sapui5 自定义控件在XML视图中的用法。部署后出错:Can';找不到对象类

Sapui5 自定义控件在XML视图中的用法。部署后出错:Can';找不到对象类,sapui5,Sapui5,我开发了一个ui5应用程序,并在其中创建了一个新的自定义控件。我将新的控件js文件保存到我的webapp的“control”路径中(在我的示例中,控件“MyControl”的文件MyInput.js)。 在WebIDE中运行我的应用程序以测试运行时不会出现任何问题。但是在将应用程序部署到abap系统之后,我现在从XMLTemplateManager收到错误消息,它找不到对象类 下面是使用我的控件的我的视图的简短版本: <mvc:View xmlns:mvc="sap.ui.core.mvc

我开发了一个ui5应用程序,并在其中创建了一个新的自定义控件。我将新的控件js文件保存到我的webapp的“control”路径中(在我的示例中,控件“MyControl”的文件MyInput.js)。 在WebIDE中运行我的应用程序以测试运行时不会出现任何问题。但是在将应用程序部署到abap系统之后,我现在从XMLTemplateManager收到错误消息,它找不到对象类

下面是使用我的控件的我的视图的简短版本:

<mvc:View xmlns:mvc="sap.ui.core.mvc" xmlns="sap.uxap" xmlns:layout="sap.ui.layout" xmlns:m="sap.m" xmlns:forms="sap.ui.layout.form"
    xmlns:core="sap.ui.core" xmlns:ssuc="sap.suite.ui.commons" xmlns:html="http://www.w3.org/1999/xhtml"
    xmlns:table="sap.ui.table" xmlns:cmns="sap.ui.commons"
    xmlns:dvp="de.fiori4cls.Fi4ClsFV.control"
    controllerName="de.fiori4cls.Fi4ClsFV.controller.FVView" displayBlock="true">
    <m:Shell id="shell">
        <m:App id="app"> 
            <m:pages>
                <m:Page id="fvViewPage" title="{i18n>SachPruef}">
                    <m:content>
                        <dvp:MyInput                                            
                            value="{ path : 'Cls>/Currency', type : 'sap.ui.model.type.String' }"
                                     vhTitle="{i18n>Currency}"/>
                    </m:content>
                </m:Page>
            </m:pages>
        </m:App>
    </m:Shell>
</mvc:View> 

这里的'de.fiori4cls.Fi4ClsFV'是我的应用程序的Id(如属性'Id'中'sap.app'部分下的manifest.json中声明的)

你知道为什么它会在WebIDE测试中运行,以及为什么它在部署到abap系统时会抛出上述错误吗

问候
Matthias通过调试、尝试和错误的混合解决了这个问题:-)

对于那些你在这里遇到类似问题的人,解决方案是。 问题是我控制的定义。因此,到目前为止,视图上方的所有内容(请参见我上面的问题)都还可以

但我的(简化测试-)控制启动如下:

    return Input.extend("MyInput", {
            "metadata": {
                "properties": {
                    // Title of Value-Help Dialog
                    "vhTitle"   : { type : "string", defaultValue :"Title" }
                }
            },
            init : function() {
                // Call inherited Method 
                Input.prototype.init.call(this);
                this.setShowValueHelp(true);
                this.attachValueHelpRequest(this.onValueHelpRequest);
            },

            renderer: sap.m.InputRenderer,

            // ======= Events
            onValueHelpRequest : function(oEvent) {
                var me = this;
                console.log("MyInput->onValueHelpRequest->Entering");
                var lvTitle = this.getVhTitle();
                alert (lvTitle);
            }

    });
我发现它运行于UI5版本1.54及更高版本。但UI5版本blow 1.54不适用。 解决这个问题的方法是用名称空间完全支持控件类。在此之后,我遇到了另一个问题,即没有定义渲染器函数。我只想继承扩展控件的渲染器,因为它不会对渲染本身进行任何更改。这里的关键是在quotationmarks中设置渲染器类

因此,这里是我的完全工作的测试控件,它现在使用ui5 1.44及更高版本运行

    return Input.extend("de.fiori4cls.Fi4ClsFV.control.MyInput", {
            "metadata": {
                "properties": {
                    // Title of Value-Help Dialog
                    "vhTitle"   : { type : "string", defaultValue :"Title" }
                }
            },
            init : function() {
                // Call inherited Method 
                Input.prototype.init.call(this);
                this.setShowValueHelp(true);
                this.attachValueHelpRequest(this.onValueHelpRequest);
            },

            renderer: "sap.m.InputRenderer",

            // ======= Events
            onValueHelpRequest : function(oEvent) {
                var me = this;
                console.log("MyInput->onValueHelpRequest->Entering");
                var lvTitle = this.getVhTitle();
                alert (lvTitle);
            }

    });
将此应用于我的“真实”控件使其运行:-)

问候
Matthias

ABAP系统中的UI5版本是什么?应用程序是否部署为独立应用程序?还是从FLP推出?如果是单机版,能否从index.html共享引导设置?您好。Abap上的UI5版本:1.44,是应用程序需要支持的旧版本UI5。WebIDE中的UI5版本更高。如果我将WebIDE中的版本设置为1.44,那么在WebIDE中测试时,应用程序也会出现同样的问题。WebIDE测试中的引导程序如下所示,但在abap系统上,它在launchpad中运行 `