2012-01-24 9 views
1

ブラウザのURLを変更せずに一般的なエラーページ(404など)をユーザーに表示するにはどうすればよいですか?Spring + Tiles - URLを変更せずにエラーページを表示しますか?

ユーザーがページ/happy/fun/timesに行くが、そのようなタイルが/マッピングが自分のWebアプリケーションに存在する表示しないのであれば、たとえば、私はURLが/happy/fun/timesとしてとどまるが、それらに代わり/error/404のタイルビューを表示したいです。

また、関連するメモで、500エラーや403エラーなどのすべてのエラーでこれをどのように行うのですか?それとも何とかやり遂げるかもしれない例外さえ?

私は、次の操作を実行するためのweb.xmlを使用して試してみた:動作するようには思えないが

<error-page> 
    <error-code>500</error-code> 
    <location>/error/500</location> 
</error-page> 
<error-page> 
    <error-code>404</error-code> 
    <location>/error/404</location> 
</error-page> 
<error-page> 
    <error-code>403</error-code> 
    <location>/error/403</location> 
</error-page> 
<error-page> 
    <exception-type>java.lang.Throwable</exception-type> 
    <location>/error/general</location> 
</error-page> 

。必要に応じて、場所を '/WEB-INF/jsp/error/404.jsp'に変更すると、404エラーがweb.xmlによってキャッチされます。しかし、実際に表示したいタイルビュー '/ error/404'の代わりに '404.jsp'ファイルの内容を表示するだけです。

+0

私はSpring MVCをしませんが、通常の方法で 'web.xml'に' 'と指定するだけではありませんか? – BalusC

答えて

0

あなたは春のコントローラや春のビューが例外を解決したい場合は、HTTPエラーコード

<error-page> 
    <error-code>404</error-code> 
    <location>/WEB-INF/jsp/error/404.jsp</location> 
</error-page> 

によって処理するために、タイプ

<error-page> 
    <exception-type>java.lang.Exception</exception-type> 
    <location>/WEB-INF/jsp/error/uncaughtException.jsp</location> 
</error-page> 

またはこれによって例外を処理するためにこれを行うことができますSimpleMappingExceptionResolver型のSpring Beanを宣言する必要があります。

<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver" p:defaultErrorView="uncaughtException"> 
    <property name="exceptionMappings"> 
     <props> 
      <prop key=".DataAccessException">dataAccessFailure</prop> 
      <prop key=".NoSuchRequestHandlingMethodException">resourceNotFound</prop> 
      <prop key=".TypeMismatchException">resourceNotFound</prop> 
      <prop key=".MissingServletRequestParameterException">resourceNotFound</prop> 
     </props> 
    </property> 
</bean> 

JSPページでは、例外インスタンスに$ {exception}でアクセスできます。私はこれをやってしまった方法

+0

OK、それはエラーを表示するために動作しますが、jspファイルの代わりにタイル表示を使用したい場合は可能ですか?私がしようとしてきたことは、 '/WEB-INF/jsp/error/404.jsp'の代わりに '/ error/404'のようなものを使用することです。なぜなら、ユーザが見るものをタイルで制御したいからですナビゲーションやそのようなものを見ることができます)。それは可能ですか、または404.jspに手動でナビゲーションやものを含める必要がありますか? – Fittersman

+0

ok私はそれに応じて投稿を更新しました –

2

次のコードを使用してました。

/WEB-INF/jsp/error/404.jsp:

<%@taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %> 

<!-- insert the view --> 
<tiles:insertDefinition name="baseLayout" > 
    <tiles:putAttribute name="body" value="<p> Error 404!! </p>" /> 
</tiles:insertDefinition> 

のweb.xml:

<error-page> 
    <error-code>500</error-code> 
    <location>/WEB-INF/jsp/error/500.jsp</location> 
</error-page> 
<error-page> 
    <error-code>404</error-code> 
    <location>/WEB-INF/jsp/error/404.jsp</location> 
</error-page> 
<error-page> 
    <error-code>403</error-code> 
    <location>/WEB-INF/jsp/error/403.jsp</location> 
</error-page> 
関連する問題