0

「if」には論理的な問題があります。パラメータ、1 つのテキストボックス、および選択が必要です。どちらもカテゴリを挿入するためのものですが、選択はデータベースから生成され、ユーザーはカテゴリをすばやく選択できます。これがnullではなく、選択が空の場合、テキストボックスのカテゴリを挿入したいと思います。反対の場合は、select 値を使用します。両方が選択されている場合 (テキストボックス内のテキスト + 選択内の選択)、選択値を選択します。両方が空の場合は、デフォルト値「その他」を定義します。

これはコードです:

//addRss.jsp

<select name="catOption">
<option value="">select category</option>
<c:forEach var="cat" items="${categories}">
    <option value="${cat}">${cat}</option>
</select>
<label for="category">Category</label>
<input type="text" id="category" name="category" value="" size="20" maxlength="20" />


//AddNewRss

String catText = request.getParameter("category");
    String catOption = request.getParameter("catOption");
    String category = "";

    if((catOption != null || !catOption.trim().isEmpty()) && (catText == null || catText.trim().isEmpty()))
        category = catOption;
    else if((catOption == null || catOption.trim().isEmpty()) && (catText != null || !catText.trim().isEmpty()))
        category = catText;
    else if((catOption != null || !catOption.trim().isEmpty()) && (catText != null || !catText.trim().isEmpty()))
        category = catOption;
    else
        category = "Other";

私の問題は、両方が空の場合、プログラムは最初の「if」を実行し、空のカテゴリを送信することです。

何かおかしくないですか?

ありがとうございました

ジェレミー。

Ps: 申し訳ありませんが、英語は私の主な言語ではありません。

4

1 に答える 1

1
if((catOption != null && !catOption.trim().isEmpty()) 
    && (catText == null || catText.trim().isEmpty())) {
        category = catOption;
}
else if((catOption == null || catOption.trim().isEmpty())
    && (catText != null && !catText.trim().isEmpty())) {
        category = catText;
}
else if((catOption != null && !catOption.trim().isEmpty())  {
    && (catText != null && !catText.trim().isEmpty()))
        category = catOption;
}
else {
    category = "Other";
}

関数を作成して読みやすくすることもできます。

private boolean isNullOrEmty(String str) {
     return str == null || str.trim().isEmpty();
}


if( ! isNullOrEmty(catOption) && isNullOrEmty(catText) ) {
        category = catOption;
}
else if( isNullOrEmty(catOption) && ! isNullOrEmty(catText)) {
        category = catText;
}
else if(!isNullOrEmty(catOption) && ! isNullOrEmty(catText))
        category = catOption;
}
else {
    category = "Other";
}
于 2013-06-11T17:42:42.360 に答える