【问题标题】:How to call different methods for different Locales in JSTL如何在 JSTL 中为不同的语言环境调用不同的方法
【发布时间】:2013-01-04 19:41:56
【问题描述】:

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

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

有没有使用标准 EL 和 JSTL 处理这个问题的好方法?

【问题讨论】:

    标签: java jsp localization jstl el


    【解决方案1】:

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

    【讨论】:

    • 唯一的问题是 bean 必须以某种方式知道当前页面的区域设置。
    【解决方案2】:

    你试过用#{school.getDescription(locale)} 代替吗?

    【讨论】:

      【解决方案3】:

      如果您是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 中添加的)。

      【讨论】:

        猜你喜欢
        • 2014-09-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-01
        • 1970-01-01
        • 2011-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多