[K/3Cloud] 动态表单打开时传递一个自定义参数并在插件中获取

插件中在调用动态表单时,通过DynamicFormShowParameter的CustomParams,增加自定义的参数。

        /// <summary>
        /// 库存查询
        /// </summary>
        private void ShowMaterialStock()
        {
            object useOrgId = (this.View.Model.GetValue("FUseOrgId") as DynamicObject)["Id"];
            object materialId = this.View.Model.GetPKValue();
            List<long> orgIds = PermissionServiceHelper.GetPermissionOrg(this.Context, new BusinessObject() { Id = K3.Core.SCM.SCMFormIdConst.STK_Inventory }, PermissionConst.View);

            DynamicFormShowParameter ShowPara = new DynamicFormShowParameter();
            ShowPara.ParentPageId = this.View.PageId;
            ShowPara.MultiSelect = false;
            ShowPara.FormId = K3.Core.SCM.SCMFormIdConst.STK_InventoryQuery;
            ShowPara.Height = 600;
            ShowPara.Width = 1000;
            string filter = string.Format(" FStockOrgId = {0} And FMaterialId = {1} And FOwnerTypeId='BD_OwnerOrg' And FOwnerId={2} ", useOrgId, materialId, useOrgId);
            ShowPara.CustomParams.Add("QueryFilter", filter);
            ShowPara.CustomParams.Add("QueryOrgId", (this.View.Model.GetValue("FUseOrgId") as DynamicObject)["Id"].ToString());
            this.View.ShowForm(ShowPara);
        }



目标单据的插件中,通过View.OpenParameter.GetCustomParameter("xxx")获取传递的自定义参数:

    /// <summary>
    /// 即时库存查询界面插件
    /// </summary>
    public class InventoryQuery : AbstractDynamicFormPlugIn
    {
        public override void OnInitialize(InitializeEventArgs e)
        {
            base.OnInitialize(e);
            object paraQueryFilter = this.View.OpenParameter.GetCustomParameter("QueryFilter");
            object paraOrgId = this.View.OpenParameter.GetCustomParameter("QueryOrgId");
            
        }
    }


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是代码示例: 首先,需要创建一个自定义的负载均衡器,例如: ``` public class MyLoadBalancer implements ServiceInstanceListSupplier, LoadBalancer { @Override public void setClientFactory(LoadBalancerClientFactory clientFactory) { // 设置客户端工厂 } @Override public void setDefaultServiceId(String serviceId) { // 设置默认的服务 ID } @Override public Request<ServiceInstance> request(Request.Options options) { // 获取请求的实例 } @Override public void choose(Request request) { // 选择请求的实例 } @Override public List<ServiceInstance> getServiceInstances() { // 获取所有的服务实例 } @Override public String getMode() { // 获取负载均衡器的模式 } } ``` 然后,在该负载均衡器重写 `request` 方法,在发送请求获取请求头信息,例如: ``` @Override public Request<ServiceInstance> request(Request.Options options) { HttpHeaders headers = RequestContext.getCurrentContext().getZuulRequestHeaders(); // 获取请求头信息 return new Request<ServiceInstance>() { @Override public ServiceInstance apply(List<ServiceInstance> instances) throws Exception { // 选择实例并返回 } @Override public void request(Request.Options options) throws Exception { // 发送请求并获取响应 } @Override public void abort() { // 取消请求 } }; } ``` 其,`RequestContext.getCurrentContext().getZuulRequestHeaders()` 方法可以获取请求头信息。 最后,在 Spring Cloud 应用使用该自定义负载均衡器,例如: ``` @LoadBalancerClient(name = "service-name", configuration = MyLoadBalancer.class) public class MyServiceClient { @Autowired private LoadBalancerClient loadBalancer; public void invokeService() { ServiceInstance instance = loadBalancer.choose("service-name"); // 根据实例发送请求 } } ``` 以上就是一个简单的自定义负载均衡器并在其获取请求头信息的示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值