Чтобы отобразить другую страницу «ошибка 500», я думаю, вы могли бы сделать то же самое со скаффолдингом Grails:
Во-первых, нам просто нужно указать представление в URL Mapping:
"500"(view: "/500") // Point to 500.gsp
Тогда вот код представления "500":
<code> <h1>Grails Runtime Exception</h1>
<h2>Error Details</h2>
<div class="message">
<strong>Error ${request.'javax.servlet.error.status_code'}:</strong>
${request.'javax.servlet.error.message'.encodeAsHTML()}<br/>
<strong>Servlet:</strong> ${request.'javax.servlet.error.servlet_name'}<br/>
<strong>URI:</strong> ${request.'javax.servlet.error.request_uri'}<br/>
<g:if test="${exception}">
<strong>Exception Message:</strong> ${exception.message?.encodeAsHTML()} <br/>
<strong>Caused by:</strong> ${exception.cause?.message?.encodeAsHTML()} <br/>
<strong>Class:</strong> ${exception.className} <br/>
<strong>At Line:</strong> [${exception.lineNumber}] <br/>
<strong>Code Snippet:</strong><br/>
<div class="snippet">
<g:each var="cs" in="${exception.codeSnippet}">
${cs?.encodeAsHTML()}<br/>
</g:each>
</div>
</g:if>
</div>
<g:if test="${exception}">
<h2>Stack Trace</h2>
<div class="stack">
<pre><g:each in="${exception.stackTraceLines}">${it.encodeAsHTML()}<br/></g:each>
Вы можете извлечь любую информацию, которая вам нужна, из error & stacktrace (div class = "stack").
Вы можете создать 2 различных шаблона для пользователя и администратора, а затем *Тег 1014 * определит, какой шаблон необходимо включить в представление.