私は初心者で、最初の Web アプリケーションを開発しています。複数の言語をサポートしようとしているので、JSTL カスタム タグ ロジックの本文でバンドル ベースのメッセージを使用します。このような:
ResourceBundle rs = ResourceBundle.getBundle("i18n.messages");
JspWriter out = getJspContext().getOut();
try {
out.print("<table><thead>");
out.print("<th>"+ rs.getString("table.id") +"</th>");
out.print("<th>"+ rs.getString("table.name") +"</th>");
out.print("<th>"+ rs.getString("table.entry") +"</th>");
out.print("<th>"+ rs.getString("table.diagnosis") +"</th>");
out.print("<th>"+ rs.getString("table.doctor") +"</th>");
out.print("<th>"+ rs.getString("table.release") +"</th>");
out.print("</thead><tbody>");
問題は、余分なタグ属性を宣言せずに、このバンドルにロケールを設定する可能性が見つからなかったことです。ちょっと:
<attribute>
<name>locale</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>java.lang.String</type>
</attribute>
その後:
<table:patients locale="${pageContext.request.locale}" />
しかし、ヘッダーに設定したものとは関係なく、常に同じロケール文字列を渡します(デフォルトではブラウザに???)、正しく動作しないようです
<fmt:setLocale value="${param.locale}" scope="session"/>
doTag() 本体内でセッション コンテキストを取得するスマートな方法はありますか?
前もって感謝します。