<!DOCTYPE html> <html class="ltr" dir="ltr" lang="es-ES"> <head> <title>✓ El Blog de Miguel Ángel Júlvez</title> <meta content="initial-scale=1.0, width=device-width" name="viewport" /> <link rel="apple-touch-icon" sizes="57x57" href="https://www.miguelangeljulvez.com/o/optimized-theme/images/favicon/apple-icon-57x57.png"> <link rel="apple-touch-icon" sizes="60x60" href="https://www.miguelangeljulvez.com/o/optimized-theme/images/favicon/apple-icon-60x60.png"> <link rel="apple-touch-icon" sizes="72x72" href="https://www.miguelangeljulvez.com/o/optimized-theme/images/favicon/apple-icon-72x72.png"> <link rel="apple-touch-icon" sizes="76x76" href="https://www.miguelangeljulvez.com/o/optimized-theme/images/favicon/apple-icon-76x76.png"> <link rel="apple-touch-icon" sizes="114x114" href="https://www.miguelangeljulvez.com/o/optimized-theme/images/favicon/apple-icon-114x114.png"> <link rel="apple-touch-icon" sizes="120x120" href="https://www.miguelangeljulvez.com/o/optimized-theme/images/favicon/apple-icon-120x120.png"> <link rel="apple-touch-icon" sizes="144x144" href="https://www.miguelangeljulvez.com/o/optimized-theme/images/favicon/apple-icon-144x144.png"> <link rel="apple-touch-icon" sizes="152x152" href="https://www.miguelangeljulvez.com/o/optimized-theme/images/favicon/apple-icon-152x152.png"> <link rel="apple-touch-icon" sizes="180x180" href="https://www.miguelangeljulvez.com/o/optimized-theme/images/favicon/apple-icon-180x180.png"> <link rel="icon" type="image/png" sizes="192x192" href="https://www.miguelangeljulvez.com/o/optimized-theme/images/favicon/android-icon-192x192.png"> <link rel="icon" type="image/png" sizes="32x32" href="https://www.miguelangeljulvez.com/o/optimized-theme/images/favicon/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="96x96" href="https://www.miguelangeljulvez.com/o/optimized-theme/images/favicon/favicon-96x96.png"> <link rel="icon" type="image/png" sizes="16x16" href="https://www.miguelangeljulvez.com/o/optimized-theme/images/favicon/favicon-16x16.png"> <link rel="shortcut icon" type="image/x-icon" href="https://www.miguelangeljulvez.com/o/optimized-theme/images/favicon.ico" /> <link rel="manifest" href="https://www.miguelangeljulvez.com/o/optimized-theme/images/favicon/manifest.json"> <meta name="msapplication-TileColor" content="#ffffff"> <meta name="msapplication-TileImage" content="https://www.miguelangeljulvez.com/o/optimized-theme/images/favicon/ms-icon-144x144.png"> <meta name="theme-color" content="#ffffff"> <meta property="fb:app_id" content="test"> <meta property="fb:fb_admins" content=""> <meta name="twitter:card" content="summary"> <meta name="twitter:url" content="https://www.miguelangeljulvez.com"> <meta name="twitter:site" content="https://www.miguelangeljulvez.com"> <meta name="twitter:creator" content="@majulvez"> <meta name="twitter:title" content="Miguel Ángel Júlvez - Freelance"> <meta name="twitter:description" content="Formación y desarrollo web JavaEE / Liferay"> <meta name="twitter:image" content=""> <meta property="og:title" content="Miguel Ángel Júlvez - Freelance"> <meta property="og:description" content="Formación y desarrollo web JavaEE / Liferay"> <meta property="og:type" content="website"> <meta property="og:url" content="https://www.miguelangeljulvez.com"> <meta property="og:image" content=""> <meta property="og:site_name" content="Miguel Ángel Júlvez - Freelance"> <meta property="og:locale" content="es_ES"/> <meta name="geo.position" CONTENT="40.447666; -3.691966"/> <meta name="geo.placename" CONTENT="Madrid"/> <meta name="geo.region" CONTENT="Spain"/> <meta name="ICBM" CONTENT="40.447666; -3.691966"/> <meta name="google-site-verification" content="zu8Pi1ENtWvs0TVlU_kOANvhCcQhsishYzLqqsRs4XI" /> <link href="https://plus.google.com/116302439302184387375" rel="publisher"/> <link href="https://plus.google.com/116302439302184387375" rel="author"/> <link rel="preconnect" href="https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic&display=swap" /> <link rel="preconnect" href="https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic&display=swap" /> <link rel="preconnect" href="https://miguelangeljulvez.disqus.com/count.js" /> <style> .owl-carousel-optimized { min-height: 265px !important; display: block !important; } ul.lfr-pagination-buttons.pager li { display: inline; } ul.lfr-pagination-buttons.pager li:last-child { float: right; } </style> <meta content="text/html; charset=UTF-8" http-equiv="content-type" /> <meta content="Tutoriales sobre Liferay / JavaEE / Java / DevOps. Show me the code!" lang="es-ES" name="description" /> <link href="https://www.miguelangeljulvez.com/o/optimized-theme/images/favicon.ico" rel="icon" /> <link class="lfr-css-file" data-senna-track="temporary" href="https://www.miguelangeljulvez.com/o/optimized-theme/css/clay.css?browserId=other&amp;themeId=optimized_WAR_optimizedtheme&amp;minifierType=css&amp;languageId=es_ES&amp;t=1791320440000" id="liferayAUICSS" rel="stylesheet" type="text/css" /> <link class="lfr-css-file" data-senna-track="temporary" href="https://www.miguelangeljulvez.com/o/optimized-theme/css/main.css?browserId=other&amp;themeId=optimized_WAR_optimizedtheme&amp;minifierType=css&amp;languageId=es_ES&amp;t=1791320440000" id="liferayThemeCSS" rel="stylesheet" type="text/css" /> <style data-senna-track="temporary" type="text/css"></style> <script type="application/ld+json"> { "@context" : "http://schema.org", "@type" : "Organization", "url" : "https://www.miguelangeljulvez.com", "contactPoint" : [{ "@type" : "ContactPoint", "telephone" : "+34-669-75-03-20", "contactType" : "customer service" }] } </script> <script type="application/ld+json"> { "@context" : "http://schema.org", "@type" : "Person", "name" : "Miguel Ángel Júlvez", "description" : "Freelance - Formación y desarrollo en arquitecturas web Java / Liferay / Docker / Gitlab", "jobTitle" : "Freelance - Formación y desarrollo en arquitecturas web Java / Liferay / Docker / Gitlab", "homeLocation": { "@type": "City", "name" : "Madrid" }, "url" : "https://www.miguelangeljulvez.com", "email" : "info@miguelangeljulvez.com", "sameAs" : [ "https://twitter.com/majulvez", "http://es.linkedin.com/in/julvez" ] } </script> </head> <body class="controls-visible other yui3-skin-sam guest-site signed-out public-page site" onload="PR.prettyPrint();DISQUSWIDGETS.getCount({reset: true});"> <div id="wrapper" class="no-home no-blog"> <div class="portlet-boundary portlet-boundary_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_ portlet-static portlet-static-end portlet-barebone portlet-navigation " id="p_p_id_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_main_navigation_menu_"> <span id="p_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_main_navigation_menu"></span> <section class="portlet" id="portlet_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_main_navigation_menu"> <div class="portlet-content"> <div class="autofit-float autofit-row portlet-header"> <div class="autofit-col autofit-col-expand"> </div> <div class="autofit-col autofit-col-end"> <div class="autofit-section"> </div> </div> </div> <div class=" portlet-content-container"> <div class="portlet-body"> <nav class="navbar navbar-expand-lg navbar-light fixed-top" id="navigation"> <div class="container"> <a class="navbar-brand" href="/">www.miguelangeljulvez.com</a> <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation"> Menu <i class="fa fa-bars"></i> </button> <div class="collapse navbar-collapse" id="navbarResponsive"> <ul class="navbar-nav ml-auto"> <li class="nav-item"> <a class="nav-link " href="https://www.miguelangeljulvez.com/es/bienvenidos" > <span> Bienvenidos </span> </a> </li> <li class="nav-item"> <a class="nav-link " href="https://www.miguelangeljulvez.com/es/sobre-mi" > <span> Sobre mí </span> </a> </li> <li class="nav-item"> <a class="nav-link " href="https://www.miguelangeljulvez.com/es/servicios" > <span> Servicios </span> </a> </li> <li class="nav-item"> <a class="nav-link selected" href="https://www.miguelangeljulvez.com/es/blog" > <span> Blog </span> </a> </li> <li class="nav-item"> <a class="nav-link " href="https://www.miguelangeljulvez.com/es/contacto" > <span> Contacto </span> </a> </li> </ul> </div> </div> </nav> </div> </div> </div> </section> </div> <style> @media (max-width: 576px) { .no-webp .masthead { background-image: url('/o/optimized-theme/images/jpg/mobile/blog-bg.jpg'); } .webp .masthead { background-image: url('/o/optimized-theme/images/webp/mobile/blog-bg.webp'); } } @media (min-width: 576px) { .no-webp .masthead { background-image: url('/o/optimized-theme/images/jpg/desktop/blog-bg.jpg'); } .webp .masthead { background-image: url('/o/optimized-theme/images/webp/desktop/blog-bg.webp'); } } </style> <header class="masthead"> <div class="overlay"></div> <div class="container"> <div class="row"> <div class="col-lg-8 col-md-10 mx-auto"> <div class="site-heading"> <h1>Blog</h1> <h2 class="subheading">Tutoriales sobre Liferay, JavaEE, DevOps, etc</h2> </div> </div> </div> </div> </header> <section id="content" class="container"> <div class="portlet-boundary portlet-boundary_com_liferay_site_navigation_breadcrumb_web_portlet_SiteNavigationBreadcrumbPortlet_ portlet-static portlet-static-end portlet-barebone portlet-breadcrumb " id="p_p_id_com_liferay_site_navigation_breadcrumb_web_portlet_SiteNavigationBreadcrumbPortlet_"> <span id="p_com_liferay_site_navigation_breadcrumb_web_portlet_SiteNavigationBreadcrumbPortlet"></span> <section class="portlet" id="portlet_com_liferay_site_navigation_breadcrumb_web_portlet_SiteNavigationBreadcrumbPortlet"> <div class="portlet-content"> <div class="autofit-float autofit-row portlet-header"> <div class="autofit-col autofit-col-expand"> </div> <div class="autofit-col autofit-col-end"> <div class="autofit-section"> </div> </div> </div> <div class=" portlet-content-container"> <div class="portlet-body"> <nav aria-label="Ruta de navegación" id="_com_liferay_site_navigation_breadcrumb_web_portlet_SiteNavigationBreadcrumbPortlet_breadcrumbs-defaultScreen"> <nav aria-label="breadcrumb"> <ul class="breadcrumb breadcrumb-horizontal" itemscope="" itemtype="http://schema.org/BreadcrumbList"> <li class="breadcrumb-item " itemprop="itemListElement" itemscope="" itemtype="http://schema.org/ListItem"> <a href="/es/web/guest/bienvenidos" itemprop="item"> <span itemprop="name"> Inicio </span> </a> <meta itemprop="position" content="1"> </li> <li class="breadcrumb-item active" > Blog </li> </ul> </nav> </nav> </div> </div> </div> </section> </div> <style type="text/css">.master-layout-fragment .portlet-header{display:none}</style> <div class="columns-2" id="main-content" role="main"> <div class="portlet-layout row"> <div class="col-md-8 portlet-column portlet-column-first" id="column-1"> <div class="portlet-dropzone portlet-column-content portlet-column-content-first" id="layout-column_column-1"> <div class="portlet-boundary portlet-boundary_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_ portlet-static portlet-static-end portlet-barebone portlet-asset-publisher " id="p_p_id_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_IixX4qLlL2ii_"> <span id="p_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_IixX4qLlL2ii"></span> <section class="portlet" id="portlet_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_IixX4qLlL2ii"> <div class="portlet-content"> <div class="autofit-float autofit-row portlet-header"> <div class="autofit-col autofit-col-expand"> </div> <div class="autofit-col autofit-col-end"> <div class="autofit-section"> </div> </div> </div> <div class=" portlet-content-container"> <div class="portlet-body"> <script type="application/ld+json"> { "@context":"http://schema.org", "@type":"Blog", "author": "Miguel Angel Júlvez", "datePublished": "2016-04-01T00:00:00Z", "headline": "Blog de Miguel Ángel Júlvez", "image": "", "name": "Blog de Miguel Ángel Júlvez", "publisher": "Miguel Angel Júlvez", "dateModified": "2019-12-17T22:46:49+0000", "mainEntityOfPage": "", "blogPosts": [ { "@type":"BlogPosting", "author": "Miguel Ángel Júlvez", "datePublished": "2019-12-17T22:45:00+0000", "headline": "Cómo usar reCAPTCHAv3 en Liferay 7.2", "image": { "@type": "ImageObject", "name": "Cómo usar reCAPTCHAv3 en Liferay 7.2", "url": "https://www.miguelangeljulvez.com/o/clean-blog-theme/images/favicon/favicon-96x96.png", "width": "300px", "height": "300px" }, "name": "Cómo usar reCAPTCHAv3 en Liferay 7.2", "publisher": { "@type": "Organization", "url" : "https://www.miguelangeljulvez.com", "name" : "https://www.miguelangeljulvez.com", "logo" : { "@type": "ImageObject", "name": "logo", "url": "https://www.miguelangeljulvez.com/o/clean-blog-theme/images/favicon/favicon-96x96.png", "width": "96px", "height": "96px" } }, "dateModified": "2019-12-17T22:46:49+0000", "mainEntityOfPage": "https://www.miguelangeljulvez.com/es/blog/como-usar-recaptcha-v3-en-liferay-7.2" } , { "@type":"BlogPosting", "author": "Miguel Ángel Júlvez", "datePublished": "2019-07-04T10:45:00+0000", "headline": "Google Single Sign On en Liferay 7.2 con OpenId", "image": { "@type": "ImageObject", "name": "Google Single Sign On en Liferay 7.2 con OpenId", "url": "https://www.miguelangeljulvez.com/o/clean-blog-theme/images/favicon/favicon-96x96.png", "width": "300px", "height": "300px" }, "name": "Google Single Sign On en Liferay 7.2 con OpenId", "publisher": { "@type": "Organization", "url" : "https://www.miguelangeljulvez.com", "name" : "https://www.miguelangeljulvez.com", "logo" : { "@type": "ImageObject", "name": "logo", "url": "https://www.miguelangeljulvez.com/o/clean-blog-theme/images/favicon/favicon-96x96.png", "width": "96px", "height": "96px" } }, "dateModified": "2019-07-04T12:48:53+0000", "mainEntityOfPage": "https://www.miguelangeljulvez.com/es/blog/liferay/google-single-sign-on-en-liferay-7.2-con-openid" } , { "@type":"BlogPosting", "author": "Miguel Ángel Júlvez", "datePublished": "2019-06-06T12:24:00+0000", "headline": "Minimizar la respuesta html en Liferay 7.2", "image": { "@type": "ImageObject", "name": "Minimizar la respuesta html en Liferay 7.2", "url": "https://www.miguelangeljulvez.com/o/clean-blog-theme/images/favicon/favicon-96x96.png", "width": "300px", "height": "300px" }, "name": "Minimizar la respuesta html en Liferay 7.2", "publisher": { "@type": "Organization", "url" : "https://www.miguelangeljulvez.com", "name" : "https://www.miguelangeljulvez.com", "logo" : { "@type": "ImageObject", "name": "logo", "url": "https://www.miguelangeljulvez.com/o/clean-blog-theme/images/favicon/favicon-96x96.png", "width": "96px", "height": "96px" } }, "dateModified": "2019-07-04T10:33:05+0000", "mainEntityOfPage": "https://www.miguelangeljulvez.com/es/blog/liferay/minimizar-la-respuesta-html-en-liferay-7.2" } , { "@type":"BlogPosting", "author": "Miguel Ángel Júlvez", "datePublished": "2019-03-19T12:30:00+0000", "headline": "Cómo usar Java OpenJDK 11 con Liferay 7.1 GA3", "image": { "@type": "ImageObject", "name": "Cómo usar Java OpenJDK 11 con Liferay 7.1 GA3", "url": "https://www.miguelangeljulvez.com/o/clean-blog-theme/images/favicon/favicon-96x96.png", "width": "300px", "height": "300px" }, "name": "Cómo usar Java OpenJDK 11 con Liferay 7.1 GA3", "publisher": { "@type": "Organization", "url" : "https://www.miguelangeljulvez.com", "name" : "https://www.miguelangeljulvez.com", "logo" : { "@type": "ImageObject", "name": "logo", "url": "https://www.miguelangeljulvez.com/o/clean-blog-theme/images/favicon/favicon-96x96.png", "width": "96px", "height": "96px" } }, "dateModified": "2021-11-08T10:28:55+0000", "mainEntityOfPage": "https://www.miguelangeljulvez.com/es/blog/como-usar-java-11-con-liferay" } , { "@type":"BlogPosting", "author": "Miguel Ángel Júlvez", "datePublished": "2018-11-02T09:59:00+0000", "headline": "Como crear un custom taglib en Liferay", "image": { "@type": "ImageObject", "name": "Como crear un custom taglib en Liferay", "url": "https://www.miguelangeljulvez.com/o/clean-blog-theme/images/favicon/favicon-96x96.png", "width": "300px", "height": "300px" }, "name": "Como crear un custom taglib en Liferay", "publisher": { "@type": "Organization", "url" : "https://www.miguelangeljulvez.com", "name" : "https://www.miguelangeljulvez.com", "logo" : { "@type": "ImageObject", "name": "logo", "url": "https://www.miguelangeljulvez.com/o/clean-blog-theme/images/favicon/favicon-96x96.png", "width": "96px", "height": "96px" } }, "dateModified": "2021-11-08T10:30:12+0000", "mainEntityOfPage": "https://www.miguelangeljulvez.com/es/blog/como-crear-un-custom-taglib-en-liferay" } , { "@type":"BlogPosting", "author": "Miguel Ángel Júlvez", "datePublished": "2018-11-01T19:55:00+0000", "headline": "Cómo usar reCAPTCHAv3 en Liferay", "image": { "@type": "ImageObject", "name": "Cómo usar reCAPTCHAv3 en Liferay", "url": "https://www.miguelangeljulvez.com/o/clean-blog-theme/images/favicon/favicon-96x96.png", "width": "300px", "height": "300px" }, "name": "Cómo usar reCAPTCHAv3 en Liferay", "publisher": { "@type": "Organization", "url" : "https://www.miguelangeljulvez.com", "name" : "https://www.miguelangeljulvez.com", "logo" : { "@type": "ImageObject", "name": "logo", "url": "https://www.miguelangeljulvez.com/o/clean-blog-theme/images/favicon/favicon-96x96.png", "width": "96px", "height": "96px" } }, "dateModified": "2021-11-08T10:55:20+0000", "mainEntityOfPage": "https://www.miguelangeljulvez.com/es/blog/como-usar-recaptchav3-en-liferay" } , { "@type":"BlogPosting", "author": "Miguel Ángel Júlvez", "datePublished": "2018-10-16T17:07:00+0000", "headline": "Listado de variables disponibles en Freemarker", "image": { "@type": "ImageObject", "name": "Listado de variables disponibles en Freemarker", "url": "https://www.miguelangeljulvez.com/o/clean-blog-theme/images/favicon/favicon-96x96.png", "width": "300px", "height": "300px" }, "name": "Listado de variables disponibles en Freemarker", "publisher": { "@type": "Organization", "url" : "https://www.miguelangeljulvez.com", "name" : "https://www.miguelangeljulvez.com", "logo" : { "@type": "ImageObject", "name": "logo", "url": "https://www.miguelangeljulvez.com/o/clean-blog-theme/images/favicon/favicon-96x96.png", "width": "96px", "height": "96px" } }, "dateModified": "2021-11-08T10:31:29+0000", "mainEntityOfPage": "https://www.miguelangeljulvez.com/es/blog/listado-de-variables-disponibles-en-freemarker" } , { "@type":"BlogPosting", "author": "Miguel Ángel Júlvez", "datePublished": "2018-07-06T16:30:00+0000", "headline": "GZipFilter en Liferay 7.1", "image": { "@type": "ImageObject", "name": "GZipFilter en Liferay 7.1", "url": "https://www.miguelangeljulvez.com/o/clean-blog-theme/images/favicon/favicon-96x96.png", "width": "300px", "height": "300px" }, "name": "GZipFilter en Liferay 7.1", "publisher": { "@type": "Organization", "url" : "https://www.miguelangeljulvez.com", "name" : "https://www.miguelangeljulvez.com", "logo" : { "@type": "ImageObject", "name": "logo", "url": "https://www.miguelangeljulvez.com/o/clean-blog-theme/images/favicon/favicon-96x96.png", "width": "96px", "height": "96px" } }, "dateModified": "2021-11-08T10:31:46+0000", "mainEntityOfPage": "https://www.miguelangeljulvez.com/es/blog/gzipfilter-en-liferay-7.1" } , { "@type":"BlogPosting", "author": "Miguel Ángel Júlvez", "datePublished": "2017-02-25T16:39:00+0000", "headline": "Weld development mode en Liferay", "image": { "@type": "ImageObject", "name": "Weld development mode en Liferay", "url": "https://www.miguelangeljulvez.com/o/clean-blog-theme/images/favicon/favicon-96x96.png", "width": "300px", "height": "300px" }, "name": "Weld development mode en Liferay", "publisher": { "@type": "Organization", "url" : "https://www.miguelangeljulvez.com", "name" : "https://www.miguelangeljulvez.com", "logo" : { "@type": "ImageObject", "name": "logo", "url": "https://www.miguelangeljulvez.com/o/clean-blog-theme/images/favicon/favicon-96x96.png", "width": "96px", "height": "96px" } }, "dateModified": "2021-11-08T10:32:11+0000", "mainEntityOfPage": "https://www.miguelangeljulvez.com/es/blog/weld-development-mode-en-liferay" } , { "@type":"BlogPosting", "author": "Miguel Ángel Júlvez", "datePublished": "2016-11-18T21:55:00+0000", "headline": "Integrando Liferay con Alfresco", "image": { "@type": "ImageObject", "name": "Integrando Liferay con Alfresco", "url": "https://www.miguelangeljulvez.com/o/clean-blog-theme/images/favicon/favicon-96x96.png", "width": "300px", "height": "300px" }, "name": "Integrando Liferay con Alfresco", "publisher": { "@type": "Organization", "url" : "https://www.miguelangeljulvez.com", "name" : "https://www.miguelangeljulvez.com", "logo" : { "@type": "ImageObject", "name": "logo", "url": "https://www.miguelangeljulvez.com/o/clean-blog-theme/images/favicon/favicon-96x96.png", "width": "96px", "height": "96px" } }, "dateModified": "2021-11-08T10:32:22+0000", "mainEntityOfPage": "https://www.miguelangeljulvez.com/es/blog/integrando-liferay-con-alfresco" } ] } </script> <div class="col-lg-10 col-md-10 mx-auto blog-list"> <div class="journal-content-article " data-analytics-asset-id="251653" data-analytics-asset-title="Cómo usar reCAPTCHAv3 en Liferay 7.2" data-analytics-asset-type="web-content"> <div class="post-preview"> <a href="https://www.miguelangeljulvez.com/es/blog/como-usar-recaptcha-v3-en-liferay-7.2" title="Cómo usar reCAPTCHAv3 en Liferay 7.2"> <h2 class="post-title"> Cómo usar reCAPTCHAv3 en Liferay 7.2 </h2> <h3 class="post-subtitle"> <p>Con códigos de ejemplo&nbsp;en GitHub</p> </h3> </a> <p class="post-meta"> Publicado por <a href="/sobre-mi" title="Miguel Ángel Júlvez">Miguel Ángel Júlvez</a> el mar, 17 dic 2019 22:45:00 +0000 <br /> <span class="disqus-comment-count" data-disqus-identifier="com.liferay.journal.model.JournalArticle_ 251653">Comentarios</span> </p> </div> <hr /> </div> <div class="journal-content-article " data-analytics-asset-id="241073" data-analytics-asset-title="Google Single Sign On en Liferay 7.2 con OpenId" data-analytics-asset-type="web-content"> <div class="post-preview"> <a href="https://www.miguelangeljulvez.com/es/blog/liferay/google-single-sign-on-en-liferay-7.2-con-openid" title="Google Single Sign On en Liferay 7.2 con OpenId"> <h2 class="post-title"> Google Single Sign On en Liferay 7.2 con OpenId </h2> <h3 class="post-subtitle"> </h3> </a> <p class="post-meta"> Publicado por <a href="/sobre-mi" title="Miguel Ángel Júlvez">Miguel Ángel Júlvez</a> el jue, 04 jul 2019 10:45:00 +0000 <br /> <span class="disqus-comment-count" data-disqus-identifier="com.liferay.blogs.model.BlogsEntry_241073">Comentarios</span> </p> </div> <hr /> </div> <div class="journal-content-article " data-analytics-asset-id="238201" data-analytics-asset-title="Minimizar la respuesta html en Liferay 7.2" data-analytics-asset-type="web-content"> <div class="post-preview"> <a href="https://www.miguelangeljulvez.com/es/blog/liferay/minimizar-la-respuesta-html-en-liferay-7.2" title="Minimizar la respuesta html en Liferay 7.2"> <h2 class="post-title"> Minimizar la respuesta html en Liferay 7.2 </h2> <h3 class="post-subtitle"> </h3> </a> <p class="post-meta"> Publicado por <a href="/sobre-mi" title="Miguel Ángel Júlvez">Miguel Ángel Júlvez</a> el jue, 06 jun 2019 12:24:00 +0000 <br /> <span class="disqus-comment-count" data-disqus-identifier="com.liferay.blogs.model.BlogsEntry_238201">Comentarios</span> </p> </div> <hr /> </div> <div class="journal-content-article " data-analytics-asset-id="223265" data-analytics-asset-title="Cómo usar Java OpenJDK 11 con Liferay 7.1 GA3" data-analytics-asset-type="web-content"> <div class="post-preview"> <a href="https://www.miguelangeljulvez.com/es/blog/como-usar-java-11-con-liferay" title="Cómo usar Java OpenJDK 11 con Liferay 7.1 GA3"> <h2 class="post-title"> Cómo usar Java OpenJDK 11 con Liferay 7.1 GA3 </h2> <h3 class="post-subtitle"> </h3> </a> <p class="post-meta"> Publicado por <a href="/sobre-mi" title="Miguel Ángel Júlvez">Miguel Ángel Júlvez</a> el mar, 19 mar 2019 12:30:00 +0000 <br /> <span class="disqus-comment-count" data-disqus-identifier="com.liferay.journal.model.JournalArticle_223265">Comentarios</span> </p> </div> <hr /> </div> <div class="journal-content-article " data-analytics-asset-id="170474" data-analytics-asset-title="Como crear un custom taglib en Liferay" data-analytics-asset-type="web-content"> <div class="post-preview"> <a href="https://www.miguelangeljulvez.com/es/blog/como-crear-un-custom-taglib-en-liferay" title="Como crear un custom taglib en Liferay"> <h2 class="post-title"> Como crear un custom taglib en Liferay </h2> <h3 class="post-subtitle"> <p>Para usar reCAPTCHAv3</p> </h3> </a> <p class="post-meta"> Publicado por <a href="/sobre-mi" title="Miguel Ángel Júlvez">Miguel Ángel Júlvez</a> el vie, 02 nov 2018 09:59:00 +0000 <br /> <span class="disqus-comment-count" data-disqus-identifier="com.liferay.journal.model.JournalArticle_170474">Comentarios</span> </p> </div> <hr /> </div> <div class="journal-content-article " data-analytics-asset-id="167110" data-analytics-asset-title="Cómo usar reCAPTCHAv3 en Liferay" data-analytics-asset-type="web-content"> <div class="post-preview"> <a href="https://www.miguelangeljulvez.com/es/blog/como-usar-recaptchav3-en-liferay" title="Cómo usar reCAPTCHAv3 en Liferay"> <h2 class="post-title"> Cómo usar reCAPTCHAv3 en Liferay </h2> <h3 class="post-subtitle"> <p>Con códigos de ejemplo&nbsp;en GitHub</p> </h3> </a> <p class="post-meta"> Publicado por <a href="/sobre-mi" title="Miguel Ángel Júlvez">Miguel Ángel Júlvez</a> el jue, 01 nov 2018 19:55:00 +0000 <br /> <span class="disqus-comment-count" data-disqus-identifier="com.liferay.journal.model.JournalArticle_167110">Comentarios</span> </p> </div> <hr /> </div> <div class="journal-content-article " data-analytics-asset-id="158441" data-analytics-asset-title="Listado de variables disponibles en Freemarker" data-analytics-asset-type="web-content"> <div class="post-preview"> <a href="https://www.miguelangeljulvez.com/es/blog/listado-de-variables-disponibles-en-freemarker" title="Listado de variables disponibles en Freemarker"> <h2 class="post-title"> Listado de variables disponibles en Freemarker </h2> <h3 class="post-subtitle"> <p>Con ámbito global, theme y CMS</p> </h3> </a> <p class="post-meta"> Publicado por <a href="/sobre-mi" title="Miguel Ángel Júlvez">Miguel Ángel Júlvez</a> el mar, 16 oct 2018 17:07:00 +0000 <br /> <span class="disqus-comment-count" data-disqus-identifier="com.liferay.journal.model.JournalArticle_155153">Comentarios</span> </p> </div> <hr /> </div> <div class="journal-content-article " data-analytics-asset-id="226002" data-analytics-asset-title="GZipFilter en Liferay 7.1" data-analytics-asset-type="web-content"> <div class="post-preview"> <a href="https://www.miguelangeljulvez.com/es/blog/gzipfilter-en-liferay-7.1" title="GZipFilter en Liferay 7.1"> <h2 class="post-title"> GZipFilter en Liferay 7.1 </h2> <h3 class="post-subtitle"> <p>Habilitando la compresión en las respuestas del portal</p> </h3> </a> <p class="post-meta"> Publicado por <a href="/sobre-mi" title="Miguel Ángel Júlvez">Miguel Ángel Júlvez</a> el vie, 06 jul 2018 16:30:00 +0000 <br /> <span class="disqus-comment-count" data-disqus-identifier="com.liferay.blogs.model.BlogsEntry_174746">Comentarios</span> </p> </div> <hr /> </div> <div class="journal-content-article " data-analytics-asset-id="85308" data-analytics-asset-title="Weld development mode en Liferay" data-analytics-asset-type="web-content"> <div class="post-preview"> <a href="https://www.miguelangeljulvez.com/es/blog/weld-development-mode-en-liferay" title="Weld development mode en Liferay"> <h2 class="post-title"> Weld development mode en Liferay </h2> <h3 class="post-subtitle"> <p>CDI: Contexts and Dependency Injection for the Java EE Platform&nbsp;</p> </h3> </a> <p class="post-meta"> Publicado por <a href="/sobre-mi" title="Miguel Ángel Júlvez">Miguel Ángel Júlvez</a> el sáb, 25 feb 2017 16:39:00 +0000 <br /> <span class="disqus-comment-count" data-disqus-identifier="com.liferay.blogs.model.BlogsEntry_121739">Comentarios</span> </p> </div> <hr /> </div> <div class="journal-content-article " data-analytics-asset-id="86014" data-analytics-asset-title="Integrando Liferay con Alfresco" data-analytics-asset-type="web-content"> <div class="post-preview"> <a href="https://www.miguelangeljulvez.com/es/blog/integrando-liferay-con-alfresco" title="Integrando Liferay con Alfresco"> <h2 class="post-title"> Integrando Liferay con Alfresco </h2> <h3 class="post-subtitle"> <p>Un matrimonio... de conveniencia</p> </h3> </a> <p class="post-meta"> Publicado por <a href="/sobre-mi" title="Miguel Ángel Júlvez">Miguel Ángel Júlvez</a> el vie, 18 nov 2016 21:55:00 +0000 <br /> <span class="disqus-comment-count" data-disqus-identifier="com.liferay.blogs.model.BlogsEntry_117984">Comentarios</span> </p> </div> <hr /> </div> </div> <div class="clearfix"></div> <div class="clearfix lfr-pagination"> <ul class="lfr-pagination-buttons pagination"> <li class="disabled page-item"> <a href="javascript:void(0);" page-link onclick="" tabIndex="-1" target="_self"> Anterior </a> </li> <li class=" page-item"> <a href="https://www.miguelangeljulvez.com/es/blog?p_p_id=com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_IixX4qLlL2ii&amp;p_p_lifecycle=0&amp;p_p_state=normal&amp;p_p_mode=view&amp;_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_IixX4qLlL2ii_redirect=%2Fes%2Fblog&amp;_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_IixX4qLlL2ii_delta=10&amp;p_r_p_resetCur=false&amp;_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_IixX4qLlL2ii_cur=2" page-link onclick="" tabIndex="0" target="_self"> Siguiente </a> </li> </ul> </div> <script>function _com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_IixX4qLlL2ii_submitForm(curParam,cur){var data={};data[curParam]=cur;Liferay.Util.postForm(document.txpc__com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_IixX4qLlL2ii_pageIteratorFm,{data:data})};</script> </div> </div> </div> </section> </div> <div class="portlet-boundary portlet-boundary_com_liferay_journal_content_web_portlet_JournalContentPortlet_ portlet-static portlet-static-end portlet-barebone portlet-journal-content " id="p_p_id_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_bpS6HaAqkZ51_"> <span id="p_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_bpS6HaAqkZ51"></span> <section class="portlet" id="portlet_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_bpS6HaAqkZ51"> <div class="portlet-content"> <div class="autofit-float autofit-row portlet-header"> <div class="autofit-col autofit-col-expand"> </div> <div class="autofit-col autofit-col-end"> <div class="autofit-section"> <div class="visible-interaction"> </div> </div> </div> </div> <div class=" portlet-content-container"> <div class="portlet-body"> <div class="" data-fragments-editor-item-id="33425-161205" data-fragments-editor-item-type="fragments-editor-mapped-item" > <div class="journal-content-article " data-analytics-asset-id="161203" data-analytics-asset-title="Feed RSS" data-analytics-asset-type="web-content"> <div class="text-right"><a href="http://feeds.feedburner.com/miguelangeljulvez" rel="alternate" style="" target="_blank" title="Subscribe to my feed" type="application/rss+xml"><img alt="" src="//feedburner.google.com/fb/images/pub/feed-icon32x32.png" style="border:0" /> </a> <a href="http://feeds.feedburner.com/miguelangeljulvez" rel="alternate" style="" target="_blank" title="Subscribe to my feed" type="application/rss+xml"> Suscríbete al feed</a></div> </div> </div> </div> </div> </div> </section> </div> </div> </div> <div class="col-md-4 portlet-column portlet-column-last" id="column-2"> <div class="portlet-dropzone portlet-column-content portlet-column-content-last" id="layout-column_column-2"> <div class="portlet-boundary portlet-boundary_com_liferay_asset_categories_navigation_web_portlet_AssetCategoriesNavigationPortlet_ portlet-static portlet-static-end portlet-barebone portlet-asset-categories-navigation " id="p_p_id_com_liferay_asset_categories_navigation_web_portlet_AssetCategoriesNavigationPortlet_INSTANCE_hmRGL9lvFlZ0_"> <span id="p_com_liferay_asset_categories_navigation_web_portlet_AssetCategoriesNavigationPortlet_INSTANCE_hmRGL9lvFlZ0"></span> <section class="portlet" id="portlet_com_liferay_asset_categories_navigation_web_portlet_AssetCategoriesNavigationPortlet_INSTANCE_hmRGL9lvFlZ0"> <div class="portlet-content"> <div class="autofit-float autofit-row portlet-header"> <div class="autofit-col autofit-col-expand"> </div> <div class="autofit-col autofit-col-end"> <div class="autofit-section"> </div> </div> </div> <div class=" portlet-content-container"> <div class="portlet-body"> <div class="panel panel-default lfr-panel lfr-panel-extended"> <div class="panel-heading"> <div class="h4 panel-title"> <span>&nbsp;</span> <span style="display: none;">Blog</span> </div> </div> <div class="in"> <div class="panel-body"> <div class="lfr-asset-category-list-container yui3-widget component tree-view"> <ul class="lfr-asset-category-list tree-view-content tree-normal tree-root-container list-unstyled"> <li class="tree-node"> <a href="/blog/devops"> DevOps (7) </a> </li> <li class="tree-node"> <a href="/blog/elasticsearch"> Elasticsearch (1) </a> </li> <li class="tree-node"> <a href="/blog/liferay"> Liferay (26) </a> <ul class="lfr-asset-category-list tree-view-content tree-normal tree-root-container "> <li class="tree-node"> <a href="/blog/liferay/version-7.0"> Versión 7.0 (18) </a> </li> <li class="tree-node"> <a href="/blog/liferay/version-7.1"> Versión 7.1 (9) </a> </li> <li class="tree-node"> <a href="/blog/liferay/version-7.2"> Versión 7.2 (3) </a> </li> </ul> </li> <li class="tree-node"> <a href="/blog/seo"> SEO (1) </a> </li> </ul> </div> </div> </div> </div> </div> </div> </div> </section> </div> </div> </div> </div> </div> <form action="#" aria-hidden="true" class="hide" id="hrefFm" method="post" name="hrefFm"><span></span><button hidden type="submit">Oculto</button></form> </section> <hr /> <footer> <div class="container"> <div class="row"> <div class="col-lg-8 col-md-10 mx-auto"> <ul class="list-inline text-center"> <li class="list-inline-item"> <a href="https://www.linkedin.com/in/julvez/" target="_blank" title="Linkedin" rel="noreferrer"> <span class="fa-stack fa-lg"> <i class="fa fa-circle fa-stack-2x"></i> <i class="fa fa-linkedin fa-stack-1x fa-inverse"></i> </span> <span class="d-none">Linkedin</span> </a> </li> <li class="list-inline-item"> <a href="https://twitter.com/majulvez" target="_blank" title="Twitter" rel="noreferrer"> <span class="fa-stack fa-lg"> <i class="fa fa-circle fa-stack-2x"></i> <i class="fa fa-twitter fa-stack-1x fa-inverse"></i> </span> <span class="d-none">Twitter</span> </a> </li> <li class="list-inline-item"> <a href="https://github.com/majulvez" target="_blank" title="Github" rel="noreferrer"> <span class="fa-stack fa-lg"> <i class="fa fa-circle fa-stack-2x"></i> <i class="fa fa-github fa-stack-1x fa-inverse"></i> </span> <span class="d-none">Github</span> </a> </li> </ul> <div class="portlet-boundary portlet-boundary_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_ portlet-static portlet-static-end portlet-barebone portlet-navigation " id="p_p_id_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_footer_navigation_menu_"> <span id="p_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_footer_navigation_menu"></span> <section class="portlet" id="portlet_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_footer_navigation_menu"> <div class="portlet-content"> <div class="autofit-float autofit-row portlet-header"> <div class="autofit-col autofit-col-expand"> </div> <div class="autofit-col autofit-col-end"> <div class="autofit-section"> </div> </div> </div> <div class=" portlet-content-container"> <div class="portlet-body"> <ul class="list-inline text-center"> <li class="list-inline-item"> <a href="https://www.miguelangeljulvez.com/es/mapa-web" title="Mapa web">Mapa web</a> </li> <li class="list-inline-item"> <span class="obfuscatedLink" data-obfuscatedLink="aHR0cHM6Ly93d3cubWlndWVsYW5nZWxqdWx2ZXouY29tL2VzL3BvbGl0aWNhLWRlLWNvb2tpZXM="> Política de cookies </span> </li> </ul> </div> </div> </div> </section> </div> <p class="copyright text-muted">Copyright &copy; Miguel Ángel Júlvez - 2026</p> </div> </div> </div> </footer> </div> <script src="https://www.miguelangeljulvez.com/o/optimized-theme/js/main.js?browserId=other&amp;minifierType=js&amp;languageId=es_ES&amp;t=1791320440000" type="text/javascript"></script> <script type="text/javascript">(function(){var css=document.createElement("link");css.href="https://www.miguelangeljulvez.com/o/optimized-theme/css/font-awesome-mod.min.css";css.rel="stylesheet";css.type="text/css";document.getElementsByTagName("head")[0].appendChild(css)})();(function(){var css=document.createElement("link");css.href="https://fonts.googleapis.com/css?family\x3dLora:400,700,400italic,700italic\x26display\x3dswap";css.rel="stylesheet";css.type="text/css";document.getElementsByTagName("head")[0].appendChild(css)})();
(function(){var css=document.createElement("link");css.href="https://fonts.googleapis.com/css?family\x3dOpen+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800\x26display\x3dswap";css.rel="stylesheet";css.type="text/css";document.getElementsByTagName("head")[0].appendChild(css)})();</script> <!-- <script type="text/javascript" src="https://www.miguelangeljulvez.com/o/optimized-theme/js/jsf/jquery.js" async></script> <script type="text/javascript" src="https://www.miguelangeljulvez.com/o/optimized-theme/js/jsf/jquery-plugins.js" async></script> <script type="text/javascript" src="https://www.miguelangeljulvez.com/o/optimized-theme/js/jsf/core.js" async></script> <script type="text/javascript" src="https://www.miguelangeljulvez.com/o/optimized-theme/js/jsf/components.js" async></script> --> <script data-senna-off="true" id="dsq-count-scr" src="https://miguelangeljulvez.disqus.com/count.js" type="text/javascript" async="async"></script> <script data-senna-off="true" src="https://www.miguelangeljulvez.com/o/optimized-theme/js/run_prettify.min.js" type="text/javascript" async="async"></script> <script data-senna-off="true" src="https://www.miguelangeljulvez.com/o/optimized-theme/js/main.max.min.js" defer="defer"></script> <script data-senna-off="true" src="https://www.miguelangeljulvez.com/o/optimized-theme/js/bootstrap.min.js" defer="defer"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/owl.carousel.min.js" defer="defer"></script> <script data-senna-track="temporary" type="module"> import LazyLoad from "https://www.miguelangeljulvez.com/o/optimized-theme/js/lazy-img.min.js?t=1791455668815"; LazyLoad.init(); </script> <script data-senna-track="temporary" type="module"> import LazyLoadCarrousel from "https://www.miguelangeljulvez.com/o/optimized-theme/js/lazy-carrousel.min.js?t=1791455668815"; LazyLoadCarrousel.init(); </script> <script data-senna-off="true" src="https://www.miguelangeljulvez.com/o/optimized-theme/js/cookieconsent.min.js" type="text/javascript" data-cfasync="false"></script> <script data-senna-off="true" type="text/javascript" async="async">function initCookies(){var ga=document.createElement("script");ga.type="text/javascript";ga.async=true;ga.src="https://www.googletagmanager.com/gtag/js?id\x3dUA-48441633-1";var s=document.getElementsByTagName("script")[0];s.parentNode.insertBefore(ga,s);window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date);gtag("config","UA-48441633-1")}
window.cookieconsent.initialise({"palette":{"popup":{"background":"#eaf7f7","text":"#5c7291"},"button":{"background":"#56cbdb","text":"#ffffff"}},"theme":"classic","position":"bottom-right","type":"opt-out","content":{"message":"Este sitio web utiliza cookies de terceros para ofrecerle una mejor experiencia de usuario","allow":"Permitir cookies","deny":"Rechazar","link":"M\u00e1s info","href":"https://www.miguelangeljulvez.com/politica-de-cookies"},onInitialise:function(status){var type=this.options.type;
var didConsent=this.hasConsented();if(didConsent)initCookies()},onStatusChange:function(status,chosenBefore){var type=this.options.type;var didConsent=this.hasConsented();if(didConsent)initCookies()},onRevokeChoice:function(){var type=this.options.type;if(type=="opt-in");if(type=="opt-out")initCookies()}});</script> <div id="custom-modal" class="custom-modal-overlay"> <div class="custom-modal"> <h2>Hola, soy Miguel Ángel Júlvez</h2> <p> Si has llegado a esta página es porque me estás buscando :) </p> <p> Actualmente puedes encontrarme en <strong>JULDITEC</strong>, empresa especialista en el desarrollo de proyectos Liferay. </p> <p> No dudes en pasar a visitarnos y contarnos en qué podemos ayudarte. </p> <a href="https://www.julditec.com" class="btn btn-primary" target="_blank">Ir a Julditec</a> </div> </div> <style> .custom-modal-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.7); display: flex; align-items: center; justify-content: center; z-index: 9999; opacity: 0; visibility: hidden; transition: opacity 0.3s ease, visibility 0.3s ease; } .custom-modal { background: #fff; padding: 20px; border-radius: 8px; max-width: 400px; text-align: center; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); } .custom-modal h2 { font-size: 24px; margin-bottom: 15px; } .custom-modal p { font-size: 16px; line-height: 1.5; margin-bottom: 20px; } .custom-modal-button { display: inline-block; padding: 10px 20px; background: #0073e6; color: #fff; text-decoration: none; border-radius: 5px; transition: background 0.3s ease; } .custom-modal-button:hover { background: #005bb5; } .custom-modal-overlay.active { opacity: 1; visibility: visible; } </style> <script>document.addEventListener("DOMContentLoaded",function(){const modal=document.getElementById("custom-modal");setTimeout(()=>{modal.classList.add("active")},500);modal.addEventListener("click",(e)=>{if(e.target===modal)modal.classList.remove("active")})});</script> </body> </html> 