后台克隆:将上下文数据传递到configurableFlowWizard

2020-09-27 01:57发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, Hybris版本5...

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

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


大家好,

Hybris版本5.7.13

我在我的自定义产品编辑器区域中创建了一个克隆操作按钮。 下面是配置和代码

  1. 编辑器区域操作上下文" action action-id =" com.hybris.cockpitng.action.clone" property =" currentObject"

  2. 动作的definition.xml

      <?xml版本=" 1.0"编码=" UTF-8"独立="是"?>
          
              克隆操作
              操作提供从create操作默认执行克隆操作的操作。
              杂种
               1.0 
               com.web.event.actions.clone.CloneAction 
              <插座>
                  
                  
              
               java.lang.Object 
               java.lang.Object 
               icons/icon_action_event_clone_default.png 
               icons/icon_action_event_clone_default.png 
               icons/icon_action_event_clone_disabled.png
              
          
    
      

3。自定义执行效果方法

  public ActionResult  perform(ActionContext  ctx){
            ActionResult 结果= null;
              如果([[ctx.getData()EventModel的实例))
              {
                    最终的EventModel数据=(EventModel)ctx.getData();
                     最终Map  contextMap = new HashMap <>();
                     contextMap.put(ConfigurableFlowContextParameterNames.TYPE_CODE.getName(),"事件");
                     contextMap.put(" name",data.getName());
                     contextMap.put(" summary",data.getSummary());
                     sendOutput(" wizardContext",contextMap);
                     System.out.println(ctx.getParameter(" ctx.name"));
                      结果=新的ActionResult <>(ActionResult.SUCCESS,data);
              }
              其他{
                结果=新的ActionResult <>(ActionResult.ERROR);
              }
                 返回结果;
      }

  
 

小部件连接

  

  

cockpit-config.xml以加载上下文参数

  
  
  
  
  

  

尝试上述方法克隆对象并通过哈希映射将上下文预填充到可配置的流程向导中。 这些值通过套接字发送到输出,但不会在向导中填充。 如果我在程序中做任何错误,谁能指导我。 ?

在单击操作后附加向导的图像,实际上在contextMap中设置了TYPE_CODE会打开除数据之外属于TYPE_CODE的确切向导。

替代文字

8102-wiz.jpg (90.6 kB)
6条回答
追夢秋陽
2020-09-27 02:18 .采纳回答

嗨,

"问题"是您正在处理本地化的属性。 本地化值的编辑器希望使用以语言环境为键的映射,并以其值作为值的映射。 您将其作为 data.getName())发送,它返回当前会话语言环境的值。 因此:编辑器期望您提供一个单独的 java.lang.String 值的映射。 您需要正确提供一个值。 我可以为您找到两个解决方案:

  • 您可以在操作 perform 方法中将地图置于上下文中; 该地图应包含系统中可用的每个本地化的值; 您可以看一下 de.hybris.platform.platformbackoffice.accessors.LocalizedModelPropertyAccessor#read 方法以了解如何完成

  • 您也可以使用ExpressionResolverFactory实现相同的功能(" expressionResolverFactory"是在CockpitNG中定义的spring bean):

     私有ExpressionResolverFactory expressionResolverFactory;
     
          公共对象readLocalizedValue(最终对象数据,最终String属性)
          {
              返回expressionResolverFactory.createResolver()。getValue(data,attribute);
          }
     
          @需要
          公共无效setExpressionResolverFactory(最终ExpressionResolverFactory expressionResolverFactory)
          {
              this.expressionResolverFactory = expressionResolverFactory;
          }
    
       public ActionResult  perform(final ActionContext  ctx){
         //...
         
              contextMap.put(" name",readLocalizedValue(data,EventModel.NAME);
              contextMap.put(" summary",readLocalizedValue(data,EventModel.SUMMARY));
         
         //...
      }
    
    
      
    
       
    
      
     

    希望能有所帮助, 雅切克

    一周热门 更多>