いくつかのカテゴリを持つ、または持たない製品のフォームがあります。製品は 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 で生成され、それで問題ないかどうかわかりません (この方法も試しましたが、うまくいきませんでした)。
ありがとう。