应用状态保存问题-服务INTEROP中的CrossApplicationNavigation错误(403)

2020-08-24 15:07发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好 我尝试实现本指南中所述的...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我尝试实现本指南中所述的"应用程序状态保存"功能:

https://blogs.sap.com/2017/09/15/how-to-enable-the-share-option-and-persist-current-application-state-in -a-ui5-application/

但是,当我尝试使用本文结尾处显示的代码保存App的新状态时,在Service/sap/opu/odata/UI2/INTEROP/GlobalContainers中会收到403
错误。 它说CSRF令牌验证失败。

所以在评论中,有人建议打开Fiori Launchpad管理员页面->设置->系统设置下的"保存应用状态数据"选项。

但是我在事务/UI2/FLPD_CUST中的任何地方都找不到这些设置。

那么请任何人帮助我找到这些设置以将当前应用程序状态保留在INTEROP服务中?

我们非常感谢您的帮助,如果您需要其他信息来帮助我,请立即联系我。

 this.oAppStateHref = sap.ushell.Container
 .getService(" CrossApplicationNavigation")
 .createEmptyAppState(this.getOwnerComponent());
 this.oAppStateHref.setData(this._oAppState);
 this.oAppStateHref.save();
 

(4.1 kB)
4条回答
派大星 ヾ
2020-08-24 16:06

这里是用来完成作业的更详细的编码。

有人可以帮我吗?

 onInit:函数(){
//创建导航处理程序的实例
 this.oNavigationHandler = new NavigationHandler(this);
         this.oLinkHandler = new NavigationPopoverHandler();

 this.oAppStateModel = this.getOwnerComponent()。getModel(" GlobalContainers");
 this.oHashChanger = sap.ui.core.routing.HashChanger.getInstance();

//在返回导航时,Promise中返回前一个应用程序状态
 this.oNavigationHandler
 .parseNavigation()
 .done(this.onNavigationDone.bind(this));
 },
 onPressNavigateToMaterial:函数(oEvent){

 this.saveAppState();
         var that = this;
         var oSetting = this._getLinkSetting(oEvent.getSource());

 this.oLinkHandler.setSemanticObject(oSetting.semanticObject);
 this.oLinkHandler.setFieldName(oSetting.fieldName);
 this.oLinkHandler.setContactAnnotationPath(oSetting.contactAnnotationPath);
         this.oLinkHandler.setControl(oEvent.getSource());
 this.oLinkHandler.setEnableAvailableActionsPersonalization(true);


 this.oLinkHandler.attachBeforePopoverOpens(function(oPopoverOpensEvent){

 如果(oSetting.fieldName ===" MATNR"){
 oPopoverOpensEvent.getParameters()。setSemanticAttributes({
 材质:oPopoverOpensEvent.getParameters()。semanticAttributes.MATNR
 },
                  oSetting.semanticObject);
 }

//设置应用状态键
 oPopoverOpensEvent.getParameters()。setAppStateKey(that.oAppStateHref.getKey());
         oPopoverOpensEvent.getParameters()。open();

 }); //弹出框打开之前的附加结束
         this.oLinkHandler.openPopover();
 },
 saveAppState:函数(){
 var oSmartFilterBar = this.getView()。byId(" smartFilterBar");
 this._oAppState.selectionVariant = oSmartFilterBar.getDataSuiteFormat();

//创建appstate
 this.oAppStateHref = sap.ushell.Container
 .getService(" CrossApplicationNavigation")
 .createEmptyAppState(this.getOwnerComponent());
 this.oAppStateHref.setData(this._oAppState);
 this.oAppStateHref.save();

//更改哈希
 var sOldHash = this.oHashChanger.getHash();
 var sNewHash = sOldHash +"?"  +" sap-iapp-state =" + this.oAppStateHref.getKey();
 this.oHashChanger.replaceHash(sNewHash);
 },
 _getLinkSetting:函数(oControl){
 var sControlId = oControl.getId();

//设置物料或PurchasingInfoRecord链接的导航属性
 如果(sControlId.includes(" IDMATNRLink")){
 返回{
 语义对象:"材料",
 fieldName:" MATNR",
 contactAnnotationPath:" MATNR"
 };
 }
         否则,如果(sControlId.includes(" IDINFNRLink")){
 返回{
 语义对象:" PurchasingInfoRecord",
 fieldName:" INFNR",
 contactAnnotationPath:" INFNR"
 };
 }
         其他{
 MessageBox.error("不支持ID为" + oControl.getId()+"的控件。");
 }
 }
 

一周热门 更多>