0

いくつかのカテゴリを持つ、または持たない製品のフォームがあります。製品は Web サーバーによって提供されるため、jsp を使用して取得しています。製品にはコードとバージョンがあります。バージョンは、カテゴリに関連付けることも、関連付けることもできません。製品に複数のカテゴリがある場合、ユーザーはカテゴリのドロップダウン メニューから 1 つを選択する必要があります。カテゴリを変更すると、フォームで送信されるバージョンも変更されます。製品にカテゴリがない場合、カテゴリを選択せず​​に製品のバージョンがフォームに送信されます。

たとえば、コード A01 の製品 A があり、このカテゴリとバージョンのマップ: {"大": "VL", "中": "VM", "小": "VS"} と製品 B があるとします。コード B01 およびバージョン VB。

私のコードでは、選択を表示するかどうかを選択するために、製品に1より大きいカテゴリとバージョンのマップがあるかどうかを確認しています。これは、次のように jsp を介して行われます。

<% Map<String, String> categoriesVersions = product.getCategoriesVersionsMap(); %>
<% if(categoriesVersions != null && categoriesVersions.size() > 1) { %>
    <div class="rowElem">
        <label>
           Category
        </label>  
        <div class="select">
            <select name="product_version" class="mandatory">
                <option value=""></option>
                <% for(String category: categoriesVersions.keySet()) { %>                                          
                    <option value="<%=categoriesVersions.get(category)%>"><%=category%></option>                   
                <%}%>

            </select>
        </div>
    </div>      
<% } %>

次に、次のように、jQuery を使用して製品バージョンの設定を管理しています。

jQuery(function ($) {

    $(function() {
        <% if (categoriesVersions != null && categoriesVersions.size() <= 1){%>
            $form.append('<input type="hidden" name="product_version" value="<%=product.getVersion()%>" />');
        <% } else {%>
            $form.append('<input type="hidden" name="product_category" value="" />');
            $form.on('change', 'select[name="product_version"]', function() {
                var category = $('select[name="product_version"] option:selected').text();
                $form.find('input[name="product_category"]').val(category);
            });
        <% } %>
    });
});

しかし、私は疑問に思っています.jsp ifをjQueryコードに入れても大丈夫ですか?私がこれを行うことができる他の方法はありますか?それは機能しますが、私の論理が悪いのではないかと心配しています。

また、カテゴリとバージョン マップを json オブジェクトに変換し、jQuery でのみ動作することも考えていましたが、選択した html は引き続き JSP で生成され、それで問題ないかどうかわかりません (この方法も試しましたが、うまくいきませんでした)。

ありがとう。

4

1 に答える 1