Javascript 如果客户端状态丢失,ADF/WCP弹出窗口

Javascript 如果客户端状态丢失,ADF/WCP弹出窗口,javascript,popup,oracle-adf,Javascript,Popup,Oracle Adf,我使用的是JDev 11.1.1.7.0、WCP 11.1.1.8.0,我试图覆盖弹出窗口上的以下内容,当客户端状态\u MAX\u令牌的配置值小于所使用的视图状态数时,视图状态丢失时,弹出窗口会显示以下内容: 由于处于非活动状态,您的会话已超时,不再处于活动状态。单击“确定”重新加载页面 为此,我检查了浏览器中adfdhtmlookandfeel.\uu翻译中的值,发现MSGPPRViewExpired是上述消息的键。在我的皮肤包中,我为MSGPPRViewExpired指定了一个新值,可以在

我使用的是JDev 11.1.1.7.0、WCP 11.1.1.8.0,我试图覆盖弹出窗口上的以下内容,当客户端状态\u MAX\u令牌的配置值小于所使用的视图状态数时,视图状态丢失时,弹出窗口会显示以下内容:

由于处于非活动状态,您的会话已超时,不再处于活动状态。单击“确定”重新加载页面

为此,我检查了浏览器中adfdhtmlookandfeel.\uu翻译中的值,发现MSGPPRViewExpired是上述消息的键。在我的皮肤包中,我为MSGPPRViewExpired指定了一个新值,可以在浏览器调试器中看到反映的值。但是,当弹出窗口出现时,它仍然显示旧消息

更新1- 还反编译了oracle.adfinternal.view.faces.renderkit.rich.resource.RichBundle,并将MSGPPRViewExpired作为密钥。不确定为什么弹出窗口仍然显示默认文本

更新2- 我也试过这个-

    FacesContext facesContext = phaseEvent.getFacesContext();
    HttpServletResponse res = (HttpServletResponse) facesContext.getExternalContext().getResponse();
    try {
        res.getWriter().write("<script>AdfDhtmlLookAndFeel.__TRANSLATIONS['MSGPPRViewExpired']='Sorry.. Something went wrong, we are gonna have to reload the page'</script>");
    } catch (IOException e) {
        //handle
    }

在一个相位的前后相位内任何一个相位。它也会更新消息,并且可以在控制台中看到,但是弹出窗口仍然显示默认文本。

我不是100%确定,但是看起来此消息与您当前的皮肤捆绑在一起。所以,您所需要的只是覆盖皮肤消息包,并使用此密钥MSGPPRViewExpired在其中编写您自己的消息

在皮肤中创建资源文件。 在trinindad-skins.xml中注册此捆绑包,如下所示:

<bundle-name>resources.skinBundle</bundle-name>
此外,以下是此类消息的更多键:

af_document.PRE_SESSION_TIMEOUT_MSG
af_document.PRE_SESSION_TIMEOUT_MSG_SECOND
af_document.PRE_SESSION_TIMEOUT_CONFIRM_TITLE

因此,如果有人面临同样的问题,以下是解决方案,这不是很推荐,但据我所知,这是唯一的方法-

某些键(如MSGPPRViewExpired)无法直接自定义,因此,方法是覆盖您的区域设置的默认RichBundle。例如,在faces配置中添加en作为支持的语言环境,然后指定如下内容-

    package oracle.adfinternal.view.faces.renderkit.rich.resource;

    import java.util.ListResourceBundle;

    public class RichBundle_en extends ListResourceBundle {


        @Override
        public Object[][] getContents() {
            return new Object[][] { { "MSGPPRViewExpired", "Boom! New Message!" } };
        }
    }
和繁荣

@纳格,谢谢你的建议


这是我首先做的,它也反映在AdftTranslations js文件中,但弹出窗口仍然显示原始文本:|好的,让我做一些调查。在主目录中也有相同的信息bundle@navaneet.agarwal看来应该还有另外一个键,我已经更新了答案。谢谢你,纳格,但是,我都试过了,结果一样。您必须看到的一件事是,如果您查看ADFTransations中的所有字符串,或者通过反编译默认资源包,MSGPPRViewExpired是my OP中消息的键,对于所有其他键,字符串都是不同的。@navanet.agarwal您是否尝试以相同的方式通过其他字符串进行更改?它起作用了吗?我在12c上制作了一个11.1.1.7主题的示例,它按预期工作。也许你可以构建一个示例应用程序,让我看看哪里出了问题?
    package oracle.adfinternal.view.faces.renderkit.rich.resource;

    import java.util.ListResourceBundle;

    public class RichBundle_en extends ListResourceBundle {


        @Override
        public Object[][] getContents() {
            return new Object[][] { { "MSGPPRViewExpired", "Boom! New Message!" } };
        }
    }