SAPUI5:更改 url 中的 id 后如何重定向到 NotFound 页面?

Posted

技术标签:

【中文标题】SAPUI5:更改 url 中的 id 后如何重定向到 NotFound 页面?【英文标题】:SAPUI5: How can I redirect to a NotFound page after change the id in the url? 【发布时间】:2016-04-06 07:16:12 【问题描述】:

我有两个 XML 视图,我可以使用路由在它们之间导航。在第一个视图中,我有一个工作日列表,在第二个视图中,我有一个与工作日相关的膳食列表。我想做的事情:如果我将 URL 中的工作日 ID 更改为 8,例如,我想显示 Not found 页面。这是我的控制器,不知道能不能用_onBindingChange函数:

sap.ui.define([
"sap/ui/demo/nav/controller/BaseController"], function(BaseController) 
"use strict";
return BaseController.extend("sap.ui.demo.nav.controller.DETAIL", 
    onInit: function() 
        var oRouter = this.getRouter();
        oRouter.getRoute("meal").attachMatched(this._onRouteMatched, this);

    ,
    _onRouteMatched: function(oEvent) 

        var oArgs, oView;
        oArgs = oEvent.getParameter("arguments");

        oView = this.getView();

        var oTable = oView.byId("mealListID");

        var listbinding = oTable.getBinding("items");

        var oFilter = new sap.ui.model.Filter("dayId", sap.ui.model.FilterOperator.EQ, oArgs.dayId);


        listbinding.filter([oFilter]);


    ,
    _onBindingChange: function(oEvent) 
        // No data for the binding
        if (!this.getView().getBindingContext()) 

            this.getRouter().getTargets().display("notFound");

        
    

););

【问题讨论】:

您应该在问题中在此处发布代码,而不仅仅是指向其他地方的整个代码库。指向其他网站的链接会随着时间的推移而停止工作,这个问题将不再有意义。 【参考方案1】:

您必须在 _onRouteMatched 方法中重新路由。

_onRouteMatched: function(oEvent) 
//window.location.hash will give the hash value, so look for your id and re-route to other page


【讨论】:

【参考方案2】:

是的,您可以使用_onBindingChange。请参阅 Master-Detail 演示应用程序中的 this documentation 和代码 around here 以获取最佳实践示例,这与您在上面提出的建议几乎相同。

【讨论】:

以上是关于SAPUI5:更改 url 中的 id 后如何重定向到 NotFound 页面?的主要内容,如果未能解决你的问题,请参考以下文章

SAPUI5 DatePicker 如何在可以通过日历更改日期时禁止手动/键盘输入?

Ajax 调用后 url 中的 data-id 没有改变

如何检测 JavaScript 中的哈希后 URL 是不是已更改

sapui5一对多的关系

关于Servlet中的转发和重定项

SAPUI5 根据匹配的上下文/路由动态更改文本