長い時間が問題(トラブルシューティングの過程で、それらの問題のトラブルシューティングに能力や弱すぎるが、強化する必要があることがわかった)櫛の仕事で遭遇に週末を利用して、今日のブログを書いていません。
テストは問題ありませんが、オンラインのプロジェクトと見られる一部のユーザーの呼び出し後にするとき、私は、文字列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