小编Zak*_*Zak的帖子

如何使用带有JSF组件的非Value属性的参数化MessageFormat

我有一个用例,我必须使用资源包在UI上显示各种文本.其中一些资源包条目采用参数(例如{0}),因为我使用h:outputFormat,但有时这还不够.

例如

someMessage=Display this message with param {0}
Run Code Online (Sandbox Code Playgroud)

在资源包中.

要在xhtml上显示我通常会这样做:

<h:outputFormat value="#{msg['someMessage']}"><f:param value="#{someBean.value}"/></h:outputFormat>
Run Code Online (Sandbox Code Playgroud)

当这是一个简单的案例时,这很有效,但对于更复杂的用例,这还不够.例如,如果我希望commandLink的'title'属性使用上面的资源包条目:

    <h:commandLink action="logout" title="#{msg['someMessage']}">
        <f:param value="#{someBean.value}" />
        <h:graphicImage library="images" name="image.png" />
    </h:commandLink>
Run Code Online (Sandbox Code Playgroud)

这不起作用.我也尝试过:

    <h:commandLink action="logout">
        <f:attribute name="title">
            <h:outputFormat value="#{msg['someMessage']}"><f:param value="#{someBean.value}"/></h:outputFormat>
        </f:attribute>
        <h:graphicImage library="images" name="image.png" />
    </h:commandLink>
Run Code Online (Sandbox Code Playgroud)

这也不起作用,因为f:attibute不允许孩子.

即使有一个黑客绕过这个(例如使用来自primefaces的悬停组件),还有其他字段可能需要参数化消息.

有没有人知道使用MessageFormat的方法,该方法在JSF组件的非值字段中获取参数?

jsf jsf-2

10
推荐指数
1
解决办法
3732
查看次数

标签 统计

jsf ×1

jsf-2 ×1