我只是一个初学者,正在开发我的第一个 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() 正文中获取会话上下文?
提前致谢。