0

index.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">

<f:view>
    <ui:insert name="metadata" />
    <f:event type="preRenderView" listener="#{item.show}" />
    <h:body></h:body>
</f:view>
</html>

そして、スコープセッションを持つBeanクラスでは、このメソッド

public void show() throws IOException, DAOException {

        ExternalContext externalContext = FacesContext.getCurrentInstance()
                .getExternalContext();

        //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            itemsList = itemsBo.showItems(); 

        String rootPath = externalContext.getRealPath("/");
        String realPath = rootPath + "pages\\template\\body\\list.xhtml";
        externalContext.redirect(realPath);     
    }

次のページにリダイレクトする必要があると思いますが、「ブラウザでページを表示できません」というメッセージが表示されます

およびlist.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">
<h:body>
    <ui:composition template="/pages/layouts/mainLayout.xhtml">
        <ui:define name="content">
            <h:form><h:dataTable value="#{item.itemsList}" var="itemVar"
                styleClass="order-table" headerClass="order-table-header"
                rowClasses="order-table-odd-row,order-table-even-row">

                <h:column>              
                #{itemVar.content}
        </h:column>
            </h:dataTable></h:form></ui:define></ui:composition>
</h:body>
</html>

コンソールでは、エラーはありませんでした。

web.xml で

<welcome-file-list>
        <welcome-file>index.xhtml</welcome-file>
    </welcome-file-list>
    <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>*.xhtml</url-pattern>
    </servlet-mapping>

この問題とリダイレクト後に値 itemsList を失う理由は何ですか?

4

1 に答える 1

1

メソッドredirect()は有効なURLを受け取る必要があり、それに渡すものは無効です。これは主\\に、通常のスラッシュの代わりにバックスラッシュを使用しているためです/

作ってみてください:

String realPath = rootPath + "pages/template/body/list.xhtml";
于 2012-10-11T22:17:49.963 に答える