2011-06-14 24 views
0

非常に単純なアプリケーションを作成しようとしています。ウェルカムページとしてのスタートメニューでは、顔のコンポーネントが表示されないという問題があります。のコンポーネントが表示されない

私のweb.xmlの関連スニペット

<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.xhtml</url-pattern> 
</servlet-mapping> 
<session-config> 
    <session-timeout> 
     30 
    </session-timeout> 
</session-config> 
<welcome-file-list> 
    <welcome-file>menu.xhtml</welcome-file> 
</welcome-file-list> 
<filter> 
    <filter-name>WelcomeFileFilter</filter-name> 
    <filter-class>giu.WelcomeFileFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>WelcomeFileFilter</filter-name> 
    <url-pattern>/menu.xhtml</url-pattern> 
</filter-mapping> 

マイmenu.xhtmlファイル私は、このようなテキストとして間違っている、プレーンなHTMLコンポーネントをやって何を知らない

<ui:composition xmlns="http://www.w3.org/1999/xhtml" 
      xmlns:h="http://java.sun.com/jsf/html" 
      xmlns:ui="http://java.sun.com/jsf/facelets" 
      xmlns:p="http://primefaces.prime.com.tr/ui" 
      xmlns:f="http://java.sun.com/jsf/core"> 
<h:form id="menuForm"> 
    <h1><h:outputText id="menuTitle" value="Menu Principal"/></h1><br/><br/> 
    <h3><h:outputText id="patientsTitle" value="Pacientes"/></h3><br/> 
    <h:panelGrid id="patientsGrid" columns="2"> 
     <h:outputText value="Consultar, Crear, Editar o Eliminar Paciente"/> 
     <p:commandButton id="goToPatientsButton" value="Ir"/> 
    </h:panelGrid><br/><br/> 
    <h3><h:outputText id="doctorsTitle" value="Medicos"/></h3><br/> 
    <h:panelGrid id="doctorsGrid" columns="2"> 
     <h:outputText value="Consultar, Crear, Editar o Eliminar Medicos"/> 
     <p:commandButton id="goToDoctorsButton" value="Ir"/> 
    </h:panelGrid><br/><br/> 
    <h3><h:outputText id="medicalHistoryTitle" value="Historias Medicas"/></h3><br/> 
    <h:panelGrid id="medicalHistoryGrid" columns="2"> 
     <h:outputText value="Consultar, Crear, Editar o Eliminar Historias Medicas"/> 
     <p:commandButton id="goToMedicalHistoriesButton" value="Ir"/> 
    </h:panelGrid> 
    <p:dataTable emptyMessage="Vacio" paginator="true"/> 
</h:form> 

ボタンは正しく表示されますが、データテーブルやメッセージなどのプライムフェイスコンポーネントは表示されません。

それが何のために提供している場合、私の質問は密接に関連している:<welcome-file>は「仮想」URLすることはできません任意の助けHow to set 'JSF2 welcome-file' with faces servlet mapping?

おかげ

答えて

2

。それをmenu.xhtmlと定義し、/menu.xhtmlにマッピングされたFilterを作成し、適切なURLにリダイレクトします。

@WebFilter(urlPatterns={"/menu.xhtml"}) 
public class WelcomeFileFilter implements Filter { 

    @Override 
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException { 
     ((HttpServletResponse) response).sendRedirect("faces/menu.xhtml"); 
    } 

    // ... 
} 

またはより良い、あなたはまた、単に拡張子マッピングの賛成で完全/faces/*プレフィックスマッピングを取り除くために考えることができます。 *.xhtmlを使用することをお勧めします。URLを心配する必要はなく、エンドユーザーがJSFマッピングを削除するためにURLを編集したときにJSFソースコードが公開される危険性については心配しません。

<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.xhtml</url-pattern> 
</servlet-mapping> 
<welcome-file-list> 
    <welcome-file>menu.xhtml</welcome-file> 
</welcome-file-list> 
+0

こんにちはBalus、_webcontentのroot_はおそらく愚かな質問 – camiloqp

+0

それはすべてあなたの公開Webファイルがあるフォルダのために残念ですexacltyを知りません。それは '/ WEB-INF'フォルダが置かれているフォルダです。ところで、私はこれが同じファイル拡張子を使用しているので、これは必要ではないことを認識しました。ところで、なぜあなたは拡張マッピングのために行かないのですか?はるかに明確で簡単です。 – BalusC

+0

ああ、よく空の_menu.xhtml_があります。答えはページの表示が完了していますが、面のコンポーネントはありません。 – camiloqp

関連する問題