springCloudふり例外:RequestHeaderパラメータがnull、ブレースの添加のための鍵{}であります

 

  長い時間が問題(トラブルシューティングの過程で、それらの問題のトラブルシューティングに能力や弱すぎるが、強化する必要があることがわかった)櫛の仕事で遭遇に週末を利用して、今日のブログを書いていません。

  テストは問題ありませんが、オンラインのプロジェクトと見られる一部のユーザーの呼び出し後にするとき、私は、文字列tenantIdを通過する最近会社springCloudはここに装うリモート他のサービスを通じて呼ばれるプロジェクト、あなたが見ることができ、下のコードを、RequestHeaderこの結果は、ほとんどのユーザーが正常であるあなたは、もちろん、インターフェイスに戻りたい時、ではありません。その後、我々は、コール・リンクのログを印刷し、エラーが発生したときにtenantId内部の長いRequestHeaderがnullであるので、ことがわかったあなたは、クライアントが「{} tenantId」パラメータサーバとして受け取ったときにtenantIdがnullで渡さ上記の主要パラメータプラスブレースこと、間違っていません。この一風変わりました。

/ * * 
     *言及動的量は、(のみ、カード表面を使用して)ユーザに問い合わせる
     * @param TenantID 
     * @param paramJson 
     * @return 
     * / 
    @RequestMapping(値 = " $ {} wk.url.quota / API /クォータ/ findDynamicQuotaByCustomerId "、メソッド= RequestMethod.POST)
    文字列findDynamicQuotaByCustomerId(@RequestHeader列TenantID、@RequestBody JSONObject paramJson)。

  調査を通じて、情報を見つけるために、問題の原因は、赤、印刷中に下の根底にある参照を装うことが原因である見つけます。その時springCloudバージョンで我々はFinchley.SR2を使用しています。しかし、問題を修正しましたspringCloudの新バージョン。

公共の 静的な文字列(マップ<文字列、?>文字列テンプレートを展開する変数){
     // 如果没有设置有效变量、则跳过扩展を。
    場合(checkNotNull(テンプレート、 "テンプレート")。長さ()<3 ){
       戻りテンプレート; 
    } 
    checkNotNull(変数、 "%sの変数" 、テンプレート)。
    ブールインバー= ; 
    StringBuilder VAR = 新しいStringBuilderの(); 
    StringBuilderのビルダー = 新しいStringBuilderの();
    文字C:template.toCharArray()){
       スイッチ(C){
        ケース '{' IF (INVAR){
             // '{{'エスケープ文字を解析することなく、ある 
            builder.appendを( "{" ); 
            インバー = falseに;
             BREAK ; 
          } 
          INVAR = trueにBREAK ;
         ケース '}' IF(!{INVAR)
            builder.append( '}' );
             BREAK ; 
          } 
          INVAR = falseに
          文字列のキー= Var.toString();
           // 変数はここでマップヘッダヌル値の名前ので、ヘッダであるので、一つの値だけキーがある 
          オブジェクト値= variables.get(var.toString())は、
           IF(値!= nullの){ 
            builder.append(値); 
          } {
           // ここでは"犯人"、デフォルト値際に再び戻っ初期化
           builder.append( '{')のappend( (キー).appendを。 '}' ); 
          } 
          VAR = 新しい新規のStringBuilder();
           BREAK ;
         デフォルトIF (INVAR){ 
            var.append(C)。
          }  {
            builder.append(C); 
          } 
      } 
    } 
    戻りbuilder.toStringを(); 
  }

  シンプルなソリューションだから:1)springCloudバージョンをアップグレードし; 2)パラメータのうちnullにすることはできません。

 

参考ブログます。https://www.jianshu.com/p/550fb3b5f533

 

おすすめ

転載: www.cnblogs.com/DDgougou/p/11964406.html