2011-08-17 14 views
2

テンプレートを使用する単純なJSFアプリケーションを作成しています。これは基本的なものですが、修正を見つけるのに時間がかかります。 問題は、startPage.xhtmlへのリクエストを転送するindex.jspがあることです。 startPage.xhtmlはテンプレート作成にmain.xhtmlを使用します。すべてここまでOKです。しかし、startPage.xhtmlのアンカーリンクがあり、これは制御をexpression/expression.htmlに導く。そのリンクをクリックすると、ブラウザは私のヘッダとフッタ(main.xhtmlテンプレートの一部)をレンダリングしません。 IEはexpression/expression.xhtmlファイルを開いて/保存ダイアログで開きます。JSF <ui:composition>が宛先ページで機能しない

index.jspを

<html> 
<body> 
    <jsp:forward page="startPage.jsf" /> 
</body> 
</html> 

main.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:f="http://java.sun.com/jsf/core" 
     xmlns:ui="http://java.sun.com/jsf/facelets" 
     xmlns:a4j="http://richfaces.org/a4j" 
     xmlns:rich="http://richfaces.org/rich" 
     xmlns:c="http://java.sun.com/jstl/core"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/xhtml; charset=UTF-8" /> 
    <meta http-equiv="pragma" content="no-cache" /> 
    <meta http-equiv="cache-control" content="no-cache" /> 
    <meta http-equiv="expires" content="0" /> 

<title>X</title> 
<link 
    href="css/styles.css" 
    rel="stylesheet" type="text/css" /> 

    <style> 
     .rich-table-headercell { 
      text-align: left; 
     } 

     .rich-table-cell { 
      vertical-align: top; 
     } 
    </style> 
</head> 
<body 
    style="bgcolor: #FFFFFF; margin-left: 0; margin-right: 0; margin-top: 0; margin-bottom: 20;"> 
    <!-- Start Header --> 
    <h:form id="mainForm"> 

     <ui:include src="../includes/header.xhtml"/> 

     <table width="100%" cellpadding="0" cellspacing="0" border="0"> 
      <tr> 
       <td nowrap="nowrap"> 
        <table style="background-repeat: no-repeat; background-color: #E9ECEF; " width="100%" height="20px"> 
         <tr> 
          <td nowrap="nowrap"><img 
           src="images/spacer.gif" 
           width="18" height="1" border="0" alt="" /> 
          </td> 
          <td class="globalNavGrey" align="right" nowrap="nowrap"> 
           <h:outputText value="Help" /> <rich:spacer width="10" />         
          </td> 
         </tr> 
        </table> 
       </td> 
      </tr> 
     </table> 
    </h:form> 
    <!-- main content area --> 

    <table align="left"> 
     <tr> 
      <td><img 
       src="images/spacer.gif" 
       width="5" height="1" border="0" alt="" /> 
      </td> 
      <td style="vertical-align: top;"> 
       <!-- Body starts --> 
       <ui:insert name="body"> 
       </ui:insert> 
       <!-- Body ends --> 
      </td> 
     </tr> 
    </table> 
    </body> 
</html> 

startPage.xhtml

<?xml version="1.0" encoding="windows-1252"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<ui:composition xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:a4j="http://richfaces.org/a4j" 
    xmlns:rich="http://richfaces.org/rich" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/2002/08/xhtml/xhtml1-transitional.xsd" 
    template="/includes/main.xhtml"> 
<style> 
    .cellBackground { 
     background-color:yellow; 
    } 
</style> 
    <ui:param name="subTitle" value="Understanding Disease Informatics System" /> 
    <ui:define name="body"> 
     <div 
      style="margin-left: 30px; top: 120px; width: 800px; margin-bottom: 50px;" 
      class="mainscreen"> 
      <br/> <b><font size="+1" color="003366"> 
X </font> </b><br/> <br/> This page is the entry point for X 
      developers development is organized into these subsystems: 

      <p></p> 
     <center> 
      <table border="1" cellpadding="15" cellspacing="25"> 
       <tr> 
        <td class="cellBackground" title="Enabled" > 
        <a href="${facesContext.externalContext.requestContextPath}/expression/expression.xhtml" style="font-size:20px;"> Expression Subsystem</a> 
        </td> 
        <td title="Disable" style="font-size:20px;" >Pathways</td>     
       </tr>        
      </table> 
     </center> 
      <hr></hr> 
      <font size="+1"> 
       <a href="contact">Contacts</a> 
       <hr></hr> 
      </font> 
     </div> 
    </ui:define> 
</ui:composition> 

expression.xhtml

<?xml version="1.0" encoding="windows-1252"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:a4j="http://richfaces.org/a4j" 
    xmlns:rich="http://richfaces.org/rich" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/2002/08/xhtml/xhtml1-transitional.xsd"> 

<ui:composition template="main.xhtml"> 
<ui:param name="subTitle" value="Expression Data" /> 
    <ui:define name="body"> 
     Expression page! 
    </ui:define> 

</ui:composition> 
</html> 

何か提案がありますか?

注:ページ上のすべてのリンクは静的なので、マネージドBeanは使用していません。あなたのindex.jsp

+0

なぜhtmlタグがテンプレートの一部である場合、expression.xhtmlページにhtmlタグがありますか?あなたはstartPage.xhtmlにそれらを持っていません – GBa

+0

私はさまざまな組み合わせを試していました。当初私はタグを持っていなかった。しかし、私はそれが解決するかもしれないが、..動作しませんでした。 – Rachel

+0

アンカータグをに置き換えてみましたか? – GBa

答えて

2
<jsp:forward page="startPage.jsf" /> 

FacesServlet*.jsf<url-pattern>にマッピングweb.xmlであることを示唆しています。

しかし、

<a href="${facesContext.externalContext.requestContextPath}/expression/expression.xhtml" style="font-size:20px;"> Expression Subsystem</a> 

あなたstartPage.xhtmlexpression.xhtml代わりのexpression.jsfへのリンクがあります。 IEは、生成されたHTMLの代わりに未処理のJSFソースコードを取得しています。 IEがapplication/xhtml+xmlファイルを取得するたびに、それをどうするのかわからないので、ダウンロードするように頼みます。

FacesServletと一致するようにリンクを修正する必要があります。web.xmlです。また

<a href="#{request.contextPath}/expression/expression.jsf" style="font-size:20px;"> Expression Subsystem</a> 

(私もコンテキストパス検索を簡素化することに注意してください)

、あなたはまた、単に*.xhtmlFacesServlet<url-pattern>を変更することができます。こうすることで、醜いindex.jspを完全に取り除き、<welcome-file>startPage.xhtmlに設定し、URL /リンクの末尾を常に.xhtmlとすることができます。

+0

私はそれを問題として疑っていましたが、試してみましたが、.jfsのタイプを作っても機能しませんでした。私はidex.jspを取り除くためにweb.xmlを変更するつもりです – Rachel

+0

あなたは大歓迎です。 – BalusC

関連する問題