Versiones comparadas

Clave

  • Se ha añadido esta línea.
  • Se ha eliminado esta línea.
  • El formato se ha cambiado.

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> (este elemento, suele estar definido en los ficheros de template de las páginas), para indicar que esa página no necesita sesión web, hay que indicar que la vista es transient:

Bloque de código
languagexml
<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.

Info

En realidad, los componentes de ámbito sesión, conversación o página están disponibles. Gracias al filtro <web:no-session-request-filter> podrás usarlos, pero no guardaran su contexto/estado entre peticiones. Solo están disponibles para evitar posibles errores en el acceso a los componentes.


Una vez creada la sesión Web, todas las peticiones la usaran, incluidas las indicadas en <web:no-session-request-filter>.



Configuración en Aplicaciones FundeWeb v2

Info

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

...

donde indicamos las páginas web que no necesitan sesión web para poder visualizarse. Si queremos añadir nuevas páginas, es en este filtro donde debemos añadirlas.

Si la aplicación contiene las páginas:

...

Bloque de código
languagexml
<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:

Bloque de código
User-agent: *
Disallow: /
Allow: /contexto_aplicacion/portal.seam
Allow: /contexto_aplicacion/declaracionAccesibilidad.seam
Allow: /contexto_aplicacion/politicaCookies.seam
Allow: /contexto_aplicacion/politicaPrivacidad.seam
Allow: /contexto_aplicacion/fundeweb/400.seam
Allow: /contexto_aplicacion/fundeweb/401.seam
Allow: /contexto_aplicacion/fundeweb/403.seam
Allow: /contexto_aplicacion/fundeweb/404.seam
Allow: /contexto_aplicacion/fundeweb/500.seam
Allow: /contexto_aplicacion/fundeweb/501.seam
Allow: /contexto_aplicacion/fundeweb/503.seam
Crawl-delay: 10


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


Info

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.


Advertencia

No es recomendable que el fichero robots.txt contenga la entrada

Allow: /contexto_aplicacion/index.html


porque esta entrada suele redirigir a la autenticación y por lo tanto creara una sesión web que durara como mínimo 30 minutos (configurado en el fichero web.xml).

Lo más recomendable, es que el fichero index.html, redirija a la página portal.xhtml, y que a partir de esta, vayamos a la zona principal de la aplicación.