如何在JSTL中为不同的Locales调用不同的方法

时间:2013-01-04 19:41:57

标签: java jsp localization jstl el

在JSP页面中,我得到了一个bean School,它有一个名为getDescription(String Locale)的方法。如果我通过en_US,它将返回英文文本,而对于fr_CA,它将返回法文文本。

我使用fmt标签(例如<fmt:message key="school_list.title2"/>)来获取静态内容没有问题,但有没有办法可以为bean传递参数,所以我可以使用类似:${school.description}${school.description(locale)}的内容?

有没有什么好方法可以使用标准EL和JSTL来处理这个问题?

3 个答案:

答案 0 :(得分:0)

把它放进豆子里。添加一个方法getDescription(),它使用当前的Locale调用现有方法。

答案 1 :(得分:0)

您是否尝试过使用#{school.getDescription(locale)}

答案 2 :(得分:0)

如果你是using JSP 2.2,那么你可以选择${school.getDescription(locale)}或@Med建议,deferred syntax

如果您的环境不提供JSP 2.2,那么,如果您至少拥有JSP 2.0,则可以将方法调用包装在通用function中,该方法调用将获取bean,方法名称以及参数列表和反思地称之为方法。然后,您可以执行以下操作:${f:invoke(bean, 'getDescription', locale)}

如果您使用的是JSP 1.2,那么您可以在JSP 2.0中获得与该函数类似的行为,但是使用标记(在JSP 2.0中添加了函数)。