我刚刚在国际化中遇到了一些奇怪的事情。事实上,我有一个jsf页面的一部分看起来像这样
<p:commandButton title="#{msg['delete']}" icon="ui-icon-trash" update="form"
actionListener="#{homePageController.delete}">
<p:confirm header="#{msg['confirmation']}" message="#{msg['are.you.sure']} ?"
icon="ui-icon-alert" />
</p:commandButton>
<p:confirmDialog global="true" showEffect="fade" hideEffect="drop">
<p:commandButton value="#{msg['yes']}" type="button"
styleClass="ui-confirmdialog-yes"
icon="ui-icon-check"/>
<p:commandButton value="#{msg['no']}" type="button"
styleClass="ui-confirmdialog-no"
icon="ui-icon-close"/>
</p:confirmDialog>
出现的问题是,每当我切换语言时,所有字符串都会被翻译,除标题和消息 p:confirm
另请注意,我使用ajax请求,如果我刷新页面,一切正常。
以下是突出显示问题的快照(我还没有用法语翻译)
如果我刷新页面,我得到了我想要的东西
答案 0 :(得分:0)
我也遇到了同样的问题。手动页面刷新解决了我的问题(我不知道你是否意味着手动页面刷新)。
我把它添加到我的commandLink中,它改变了语言环境并且它可以工作:
oncomplete="javascript:location.reload(true)"
答案 1 :(得分:0)
我发现了问题。这可能是Primefaces的一个错误。我刚刚摆脱 p:确认:
<p:commandButton title="#{msg['delete']}" icon="ui-icon-trash" type="button"
onclick="confirmation.show()" />
<p:confirmDialog widgetVar="confirmation" showEffect="fade" hideEffect="drop"
header="#{msg['confirmation']}"
message="#{msg['are.you.sure']} ?">
<p:commandButton value="#{msg['yes']}" icon="ui-icon-check"
styleClass="ui-confirmdialog-yes" update="form"
actionListener="#{homePageController.delete}"
oncomplete="confirmation.hide()"/>
<p:commandButton value="#{msg['no']}" type="button"
styleClass="ui-confirmdialog-no"
icon="ui-icon-close" onclick="confirmation.hide()"/>
</p:confirmDialog>