且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

MonkeyPatching:PrimeFaces 小部件扩展/覆盖

更新时间:2023-11-14 17:25:04

我已经做到了:

if(PrimeFaces.widget.OverlayPanel)
{
    PrimeFaces.widget.OverlayPanel = PrimeFaces.widget.OverlayPanel.extend(
    {
        init: function(cfg) 
        {
            this._super(cfg);
            this.align();
        },

        show: function()
        {
            console.log('blah blah blah');
            this._super();
        }
    });
};

这是存储在里面

  • 应用
    • 资源
      • js
        • pf-patches.js

        它在全局模板中使用:

        <!DOCTYPE html>
        <html lang="#{userBean.locale.language}" xmlns="http://www.w3.org/1999/xhtml" 
            xmlns:ui="http://xmlns.jcp.org/jsf/facelets" xmlns:h="http://xmlns.jcp.org/jsf/html"
            xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:cc="http://xmlns.jcp.org/jsf/composite"
            xmlns:c="http://xmlns.jcp.org/jsp/jstl/core" xmlns:fn="http://xmlns.jcp.org/jsp/jstl/functions"
            xmlns:p="http://primefaces.org/ui" xmlns:pe="http://primefaces.org/ui/extensions"
            xmlns:o="http://omnifaces.org/ui" xmlns:of="http://omnifaces.org/functions"
            xmlns:s="http://shapeitalia.com/jsf2" xmlns:sc="http://xmlns.jcp.org/jsf/composite/shape"
            xmlns:e="http://java.sun.com/jsf/composite/cc" xmlns:et="http://shapeitalia.com/edea2"
            xmlns:pt="http://xmlns.jcp.org/jsf/passthrough">
        
        <f:view locale="#{userBean.locale}" contentType="text/html">
            <h:head>
                <f:facet name="first">
                    <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" />
                    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
                    <title><ui:insert name="title">#{navigatorBean.viewTitle}</ui:insert></title>
                    <link rel="shortcut icon" type="image/x-icon" href="#{resource['favicon/favicon.ico']}" />
                </f:facet>
        
                <f:facet name="last">
        ==========> <h:outputScript name="js/pf-patches.js" /> <==========
                    <h:outputScript library="omnifaces" name="fixviewstate.js" />
                </f:facet>
            </h:head>
        
            <h:body>
                <h:outputStylesheet name="theme/custom.css" />
                <h:outputStylesheet name="theme/other-icons.css" />
        
                ...