非ajax刷新后,Primefaces覆盖不起作用

时间:2014-02-17 15:08:11

标签: jsf-2 primefaces override locale

我面对一个恼人的primefaces-bug。我有2个用于更改语言的commandLink:

<p:commandLink action="#{language.setLanguage('de')}"
                            ajax="false">
                            <h:graphicImage value="/resources/images/flags/germany.png"
                                style="vertical-align: middle;width:40px;height:34px" />
                        </p:commandLink>

如果我现在更改语言环境,页面会重新加载,但似乎主要的覆盖已经消失。至少文本更大......这是个问题吗?

问候

1 个答案:

答案 0 :(得分:0)

我会评论,而不是发布答案,但我缺少要点:)。

如果您在更改区域设置时看到样式消失,我怀疑它是您的资源定位器可能是原因。根据JSF 2.1规范,第2.6.1.3节(JSR-000314)资源标识符可以包含以下元素

[localePrefix/][libraryName/][libraryVersion/]resourceName[/resourceVersion]

假设您有一个样式表app.css,请使用

<h:outputStyleSheet library="css" name="app.css" />

会将资源定位在<root>/resources/css/app.css。我怀疑如果您以编程方式将本地更改为默认语言环境以外的其他语言(例如意大利语(即it),那么JSF将在<root>/resources/it/css/app.css中查找您的资源。它只是一种预感。我刚刚开始研究本地化需要什么,我回忆起JSF有办法组织特定于语言环境的资源。