1

JavaScript の応答ハンドラ関数で JSTL タグ (fmt:) を続行する必要があります。例えば:

  1. AJAX 経由で言語を切り替える必要があるため、JavaScript 経由でツールパネルを更新し、応答ハンドラー関数 (javascript) で fmt:setLocale に進む必要があります。
  2. ajax を介して選択ドロップダウン メニューを更新する必要があり、ローカリゼーションのために翻訳する必要があるため、javascript で fmt:message を使用する必要があります。

しかし、jspエンジンは.jsファイルを処理せず、私のコードは機能しません:

document.findElementById("div1").innerHTML = "<fmt:message key="word_from_DB"/>";
document.findElementById("div2").innerHTML = "<fmt:setLocale value="en"/>";

質問: JavaScript からこれらのタグを処理するにはどうすればよいですか、または代わりの場所をどこで検索すればよいですか?

4

1 に答える 1

0

目的を正確に達成する方法は、JSP ファイルと JS ファイルの内容によって異なりますが、これは考えられる解決策の 1 つです。

JS:

function setDivInnerHTML(html1, html2) {
    document.findElementById("div1").innerHTML = html1;
    document.findElementById("div2").innerHTML = html2;
}

JSP:

...
<script>
setDivInnerHTML("<fmt:message key="word_from_DB"/>", "<fmt:setLocale value="en"/>");
</script>
...

コメントに基づいて編集:

JSP (URL = "/都市"):

String country = request.getParameter("country");
String locale = request.getParameter("locale");
List<City> cities = getCitiesFromDB(country, locale);
out.println(objectToJSON(cities));

JS (jQuery を使用):

function createOption(val, html) {
    return $("<option></option>").html(html).val(val);
}

function populateCities(cities) {
    var $select = $("#city_select");
    $select.empty();
    for (var i = 0; i < cities.length; i++) {
        var $opt = createOption(cities[i].name, cities[i].name);
        $select.append($opt);
    }
}

function getCities(country, locale) {
    var url = "/cities";
    return $.ajax(url, {
        data: {
            country: country,
            locale: locale
        }
    });
}

// call this to load the initial cities
// and do the same thing when a new country or locale is selected
getCities(country, locale).then(populateCities);
于 2013-04-07T21:13:25.040 に答える