Etiqueta JSF no procesada después de la navegación

De hecho, estoy tratando de hacer una aplicación web usando JSF, y tengo un problema con la representación en el navegador web.

Aquí está el contexto:

Tengo una página index.xhtml que muestra correctamente las etiquetas JSF y quiero navegar a otra a través de un hipervínculo simple.

<h:outputLink  value="/Advisor/AddClient.xhtml">
       <h:outputText value="Add a client" />   </h:outputLink>

Pero luego, la página AddClient no muestra el resultado de las etiquetas JSF como debería.

Aquí está el archivo addclient:

<html xmlns="http://www.w3.org/1999/xhtml"      
      xmlns:ui="http://java.sun.com/jsf/facelets" 
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:c="http://java.sun.com/jsp/jstl/core">
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    </head>
    <h:body>
    <ui:composition template="template.xhtml">
        <script type="text/javascript">
            <!-- a validation script used in py page -->
        </script>


        <h:panelGroup layout="block" rendered="#{loginBean.isLogged}">
            <h:form id="formu" onsubmit="return validation()">
                <table>
                    <tr>
                        <td>
                            First name :
                        </td>
                        <td>
                            <h:inputText id="txtFName" value="#{clientCreationBean.fname}"/>                            
                        </td>
                    </tr>
                    <tr>
                        <td>
                            Last name :
                        </td>
                        <td>
                            <h:inputText id="txtLName" value="#{clientCreationBean.lname}"/>                           
                        </td>
                    </tr>
                    <tr>
                        <td>
                            E-Mail :
                        </td>
                        <td>
                            <h:inputText id="txtEmail" value="#{clientCreationBean.email}"/>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            Address :
                        </td>
                        <td>
                             <h:inputText id="txtAddress" value="#{clientCreationBean.address}"/>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            Zip code :
                        </td>
                        <td>
                            <h:inputText id="txtZip" value="#{clientCreationBean.zip}"/>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            City :
                        </td>
                        <td>
                            <h:inputText id="txtCity" value="#{clientCreationBean.city}"/>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            Phone :
                        </td>
                        <td>
                            <h:inputText id="txtPhone" value="#{clientCreationBean.phone}"/>
                        </td>
                    </tr>
                </table>
                <h:commandButton action="#{clientCreationBean.CreateClient()}" value="Ajouter"/>
            </h:form>
          </h:panelGroup>



    </ui:composition>
    </h:body>
</html>

y aquí está mi web.xml:

 <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <context-param>
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.xhtml</param-value>   
    </context-param>

    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>faces/index.xhtml</welcome-file>
    </welcome-file-list>

¿Alguna idea de por qué el JSF no se interpreta en mis otras páginas?

ACTUALIZACIÓN:

Tengo AddClient para trabajar así:

 <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
 </servlet-mapping>

Mover AddClient.xhtml a la misma carpeta que Index.xhtml (y ya no en la carpeta "Asesor") y cambiar mi enlace a:

<h:outputLink  value="AddClient.xhtml">
    <h:outputText value="Ajouter un client" />
 </h:outputLink>

Pero cuando dejo la página en la carpeta Advisor con un enlace que apunta a /Advisor/AddClient.xhtml, no funciona. ¿Por qué?

Gracias,

Cometa

preguntado el 22 de mayo de 12 a las 10:05

por favor muestre su archivo de cliente agregado -

publicación actualizada :) todo el código html se puede obtener en el navegador, pero las etiquetas jsf no se interpretan -

En primer lugar, me gustaría sugerirle que, dado que está usando JSF, ¿por qué todavía vive en el viejo mundo usando tr y td para crear una tabla, puede usar etiquetas incorporadas para mostrar una tabla usando JSF -

Voy de una versión antigua a una versión JSF, está previsto que así sea. Pero aún así, interpretarlo primero parece ser un buen punto de partida ^^ -

@KiTe: su primer problema es el patrón de URL en el mapeo de servlets de caras como MattHandy mencionó en su respuesta. Después de eso, está utilizando una plantilla en la página Agregar cliente. Mientras usa la plantilla, debe usar ui: define etiquetas en la página, no la ha usado en ninguna parte. Creo que necesitas resolver ambos problemas:

1 Respuestas

Su enlace no coincide con el mapeo de servlet de caras:

<h:outputLink  value="/Advisor/AddClient.xhtml">

no coincidirá con el patrón:

/faces/*

Es por eso que FacesServlet no se invocará y sus etiquetas JSF no se procesarán.

Puede cambiar el enlace a:

<h:outputLink  value="/faces/Advisor/AddClient.xhtml">

o mejor use la asignación de sufijo .xhtml en su web.xml:

 <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
 </servlet-mapping>

contestado el 22 de mayo de 12 a las 10:05

Ya probé estos dos antes de publicar aquí, pero no funcionó. Thomas KiTe Trentin

con el primero obtengo una excepción 404, con el segundo una "java.io.FileNotFoundException" o un "/Advisor/faces/AddClient.xhtml Not Found in ExternalContext as a Resource" dependiendo de lo que ponga en mi enlace: Thomas KiTe Trentin

Is Advisor ¿la raíz de contexto o una carpeta en el directorio de su página web? - mate práctico

Ok, mi mal. Cambió el enlace de salida para el /faces/* mapeo; value="/faces/Advisor/AddClient.xhtml". - mate práctico

Todavía obtengo un 404 o java.IO.exception ... un poco extraño. bueno, por ahora seguiré trabajando con las modificaciones que hice en la última edición, ya que parece funcionar. Intentaré aplicar tus consejos en un nuevo proyecto más adelante, para averiguar por qué no funcionó. Gracias - Thomas KiTe Trentin

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.