2016-11-18 30 views
0

標記文件的身體裏面比方說,我有一個非常簡單的JSP標記文件名爲show-body.tag執行異常的 結果與空白屏幕內它所做的只是輸出標籤的主體(我的標籤更復雜,但這是爲了簡單起見)。然後,在JSP頁面中,我將使用這個標籤像這樣得到一個錯誤( 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。

回答

0

在自定義標籤中,您應該使用<jsp:attribute>標籤,看看docs page

+0

謝謝。發生異常時,使用''作爲一個正文運行良好。但是,這會更改JSP頁面中的語法,我希望能夠使用標記的實際主體。 – tomusiaka

+0

爲了便於說明,示例在JSP頁面內設置了「x」變量。該變量不應該作爲屬性傳遞給自定義標記。它應該只是在標籤的身體中輸出。 – tomusiaka

相關問題