0
標記文件的身體裏面比方說,我有一個非常簡單的JSP標記文件名爲show-body.tag
執行異常的
wrong.key
不存在):
<myTag:show-body>
<c:set var="x">
<bean:message key="wrong.key"/>
</c:set>
${x}
</myTag:show-body>
這將結束與一個空白屏幕和200請求狀態代碼,而不是轉發我的我錯誤頁面。
如果我坐碼出<c:set>
,一切工作正常,這意味着我正確轉發到我的錯誤頁面,500個狀態碼:
<myTag:show-body>
<bean:message key="wrong.key"/>
</myTag:show-body>
此外,有一個異常拋出<c:set>
但外面定製的標籤的身體正常工作:
<c:set var="x">
<bean:message key="wrong.key"/>
</c:set>
${x}
而且,不是存儲標籤體中的變量與錯誤頁面正確顯示自定義標記文件的結果裏面:
<%@ tag body-content="scriptless" description="Outputs tabs" %>
<jsp:doBody />
但是,這三者的組合導致了黑屏問題。這是爲什麼發生?這是JSP內部的錯誤還是我應該使用一些特殊的方式來設置標籤文件正文內的屬性?
我們目前的解決方法是更換:
<jsp:doBody var="body"/>
${body}
有:
<c:set var="body">
<jsp:doBody/>
</c:set>
${body}
我們使用Tomcat的Servlet 8 3.1。
謝謝。發生異常時,使用''作爲一個正文運行良好。但是,這會更改JSP頁面中的語法,我希望能夠使用標記的實際主體。 –
tomusiaka
爲了便於說明,示例在JSP頁面內設置了「x」變量。該變量不應該作爲屬性傳遞給自定義標記。它應該只是在標籤的身體中輸出。 – tomusiaka