Estás viendo una versión antigua de esta página. Ve a la versión actual.

Comparar con el actual Ver el historial de la página

« Anterior Versión 7 Siguiente »

Con esta guía vamos a poder crear páginas JSF que pueden ser accedidas sin necesidad de crear una sesión Web en el servidor.

Para poder crear páginas JSF, necesitamos crear un fichero XHTML, que contendrá una etiqueta <f:view>, para indicar que esa página no necesita sesión web, hay que indicar que la vista es transient :

<f:view transient="true">
    <!-- Contenido de la página -->

</f:view>


Cuando se activa esta configuración, entonces no podemos usar componentes de ámbito sesión, conversación o página. Solo se pueden usar componentes con ámbito evento (Request), stateless o aplicación.

Configuración en Aplicaciones FundeWeb v2

A partir del arquetipo de aplicaciones FundeWeb 2.0 versión 2.0.12, no es necesario realizar estas configuraciones.


En el fichero components.xml, tenemos que añadir el siguiente filtro:

<!-- Restful or no Session request -->
<web:no-session-request-filter disabled="false" installed="true" 
     regex-url-pattern="(/error|/error_cas|/portal|/politicaCookies|/politicaPrivacidad|/declaracionAccesibilidad|/fundeweb/40\d|/fundeweb/50\d|/fundeweb/accessLock|/fundeweb/error_auth_method|/fundeweb/error_no_auth)\.seam|/rest/.*|/javax\.faces\.resource/.*|/resources/.*"/>

donde indicamos las páginas web que no necesitan sesión web para poder visualizarse.

Si la aplicación contiene las páginas:

  • /paginas/politicaCookies.xhtml
  • /paginas/politicaPrivacidad.xhtml

estas, se mueven a la carpeta raíz del modulo Web (carpeta /web/src/main/webapp). Además, tendremos que modificar las navegaciones a estas páginas, que suelen definirse en:

  • /layout/avisoCookies.xhtml
  • /layout/avisoCookiesGestion.xhtml
  • /layout/avisoPrivacidad.xhtml
  • /layout/template.xhtml


En la carpeta /layout, creamos una copia del fichero template.xhtml y la renombramos como template_transient_view.xhtml. Y realizamos las siguientes modificaciones:

  • Si se importa el fichero Javascript sessiontimer.js, a su componente <h:outputScript>, le añadimos rendered="#{not org.jboss.seam.web.session.fakeSession}"
  • En la etiqueta <f:view> añadimos la propiedad transient con valor true.
  • Si la página usa un componente <fdw:onloadScript> para realizar una invocación sobre sessionController, entonces en la línea anterior añadimos: <c:if test="#{not org.jboss.seam.web.session.fakeSession}">, que cerraremos en la línea posterior a la etiquete de cierre (</p:dialog>) del dialogo con ID noSesionDlg.


Modificamos el template (normalmente /layout/template.xhtml) por /layout/template_transient_view.xhtml usado en los ficheros:

  • politicaCookies.xhtml
  • politicaPrivacidad.xhtml
  • error.xhtml
  • error_cas.xhtml (esta página puede ser JSP, por lo que no se puede realizar el cambio a no ser que se actualice su contenido por la versión JSF)


Se puede crear una página en la raiz del módulo Web (carpeta /web/src/main/webapp), llamada portal.xhtml, con el siguiente contenido:

<ui:composition template="/layout/template_transient_view.xhtml"
	xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:s="http://jboss.org/schema/seam/taglib"
	xmlns:p="http://primefaces.org/ui"
	xmlns:pe="http://primefaces.org/ui/extensions"
	xmlns:fw="http://www.um.es/atica/fundeweb">

	<ui:define name="page-title">#{messages['value.link.home']} - #{messages['application.title']}</ui:define>

	<ui:define name="body">
		<!-- CONTENIDO -->
		<h1 class="titulo-pagina">Portal</h1>
		<p:panel header="header" footer="footer" menuTitle="menuTitle"
			toggleable="true" toggleTitle="toggleTitle" closable="true"
			closeTitle="closeTitle">
			
			<h:outputText value="Portal sin sesion web." />
			<br/>
			<p:link id="homeLink" outcome="home">
				<i class="fa fa-home fa-4x" style="color:#B02129;"></i>
				<br/>
				<h:outputText value="#{messages['value.link.home']}" style="color:#B02129; text-decoration:underline;"/>
			</p:link>
		
		</p:panel>
	</ui:define>
</ui:composition>


El contenido de esta página se puede cargar con la información que se desee. Incluso puede ser el objetivo configurado en el fichero index.html.

Si la aplicación tiene en la carpeta raíz del módulo Web (carpeta /web/src/main/webapp) un fichero robots.txt (sino, se puede crear con la guía Creación y configuración de ficheros robots.txt), este, se puede dejar con esta configuración:

User-agent: *
Disallow: /
Allow: /contexto_aplicacion/index.html
Allow: /contexto_aplicacion/portal.seam
Allow: /contexto_aplicacion/declaracionAccesibilidad.seam
Allow: /contexto_aplicacion/politicaCookies.seam
Allow: /contexto_aplicacion/politicaPrivacidad.seam
Crawl-delay: 10


siempre y cuando esas páginas indicadas en el fichero, realmente existan.


El valor de contexto_aplicacion, es propio de la aplicación, es decir, que no no solo hay que pegar el contenido del fichero, también hay que modificarlo para que sea correcto para la aplicación.




  • Sin etiquetas