<p:confirm> internationalization jsf </p:confirm>

时间:2014-03-09 15:07:54

标签: ajax jsf-2

我刚刚在国际化中遇到了一些奇怪的事情。事实上,我有一个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请求,如果我刷新页面,一切正常。

以下是突出显示问题的快照(我还没有用法语翻译) enter image description here enter image description here

如果我刷新页面,我得到了我想要的东西 enter image description here

2 个答案:

答案 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>