私のプロジェクト (Java/Play フレームワーク) では、応答がエラー コードである場合に Web サービスからの応答をチェックするエラー処理ルーティングがあり、ユーザー入力の問題を示す対応するエラー メッセージが表示され、サービスがチェックします。ユーザー入力の有効性。
ユーザーが % 記号を入力すると、エラー表示ロジックが使用するため、このロジックが壊れます。
String.format(message, messageArgs);
これは、% を見つけるメッセージ文字列のイントロに messageArgs を補間します。また、messageArgs に % が含まれている場合は、例外が発生します。
メッセージを表示する前に、ユーザー入力から % をサニタイズ、エスケープ、または削除する必要があります。
message: 要求された電子メール アドレス %s は無効です messageArgs: orlyb%@gmail.com
Javaでこれを最も簡単で最短の方法で行う方法に関するアドバイスはありますか?
エラーログの一部です
java.util.UnknownFormatConversionException: Conversion = 'i'
at java.util.Formatter$FormatSpecifier.conversion(Formatter.java:2646)
at java.util.Formatter$FormatSpecifier.<init>(Formatter.java:2675)
at java.util.Formatter.parse(Formatter.java:2528)
at java.util.Formatter.format(Formatter.java:2469)
at java.util.Formatter.format(Formatter.java:2423)
at java.lang.String.format(String.java:2797)
at controllers.api.PublicAPI.renderAPIError(PublicAPI.java:176)
at controllers.api.DeviceAPI.setEmailAddress(DeviceAPI.java:736)
at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:557)
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:508)
at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:484)
at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:479)
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:161)
at Invocation.HTTP Request(Play!)
ありがとう!