5

内容を検証し、 StringBuilderの形式で (失敗の場合) 警告を出す検証ルーチンを構築しています。以下のコードで、値 paramX と paramY の下限をチェックしているとします。

 StringBuilder sb= new StringBuilder();

        if(paramX<10){
            sb.append("paramX cannot be less than 10 ");
        }

        if(paramY<20){
            sb.append("paramY cannot be less than 20 ");
        }

        System.out.println(sb);

次のように出力されます: paramX は 10 未満にすることはできません paramY は 20 未満にすることはできません

しかし、追加された各文字列が新しい行に出力されるような出力が必要です。以下のように。

paramX cannot be less than 10 

paramY cannot be less than 20

私は次の回避策を使用しましたが、同じコードを何度も繰り返すことになりました(これはしたくありません)。

sb.append(System.getProperty("line.separator")); // Add Explicit line separator each time
sb.append("\n");
sb.append("paramX cannot be less than 10 \n");

それを行う簡単な方法はありますか?

4

8 に答える 8

7

何度もやりたくない場合は、ヘルパー メソッドを記述します。

public void appendString(StringBuilder builder, String value) {
    builder.append(value + System.lineSeparator());
}

次に呼び出します。

if(paramX<10){
    appendString(sb, "paramX cannot be less than 10 ");
}

これにより、エラーの出力形式を変更する必要がある場合に、維持する場所が 1 か所だけになります。

于 2013-11-06T13:36:51.930 に答える
5

別のオプションは、探している機能を備えた Apache Commons StrBuilder を使用することです。

StrBuilder.appendLn()

于 2015-12-03T18:01:45.550 に答える
4

簡単な方法は、エラーを連結するのではなく、エラーのリストを保持することです。これは、論理エラーとその表示の間の懸念の分離を維持するのに役立ちます。

Spring 検証がどのように機能するかを確認してください。エラーのリストを保持する Errors オブジェクトと、さまざまなエラーのユーザーに表示されるメッセージを埋める別のメッセージ ソース オブジェクトがあります。

于 2013-11-06T13:38:30.957 に答える
2

新しい行を自動的に追加する println(String string) メソッドがあるため、 PrintStream を使用してみてください。

このようなもの。

ByteArrayOutputStream bos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(bos);
ps.println("Line 1");
ps.println("Line 2");
ps.flush();
String message = new String(bos.toByteArray());
System.out.println(message);
于 2013-11-06T13:42:46.693 に答える
1

まず、すべての自分自身\nの最後に改行文字( ) を含める必要があります。.append()

sb.append("paramX cannot be less than 10 \n");

改行ロジックを繰り返す場合は、メソッドでラップするだけです。

public void append(StringBuilder sb, Object value) {
    sb.append(value).append(System.getProperty("line.separator")).append('\n');
}

そして、次のように使用します。

if(paramX < 10){
    append(sb, "paramX cannot be less than 10");
}
于 2013-11-06T13:36:53.180 に答える
-1

直接追加するだけです...

        if(paramX<10){
            sb.append("paramX cannot be less than 10 \n ");
        }

        if(paramY<20){
            sb.append("paramY cannot be less than 20 \n ");
        }
于 2013-11-06T13:36:45.367 に答える
-1

使用するだけで、\nどこでも機能します。また、メッセージが2 つある場合は、条件付きで改行を追加したいようです。

StringBuilder sb = new StringBuilder();

if (paramX<10) {
    sb.append("paramX cannot be less than 10 ");
}

if (paramY<20) {
    if (!sb.length() > 0) // only add newline if needed
        sb.append('\n');
    sb.append("paramY cannot be less than 20 ");
}
于 2013-11-06T13:39:38.987 に答える