BodyTagSupport執行順序
載BodyTagSupport類的方法:
編寫標簽對應的實現類時,需要重載BodyTagSupport類幾個方法:doStartTag(), setBodyContent(), doInitBody(), doAfterBody(), doEndTag();
他們執行順序如下:
doStartTag()→doInitBody()→setBodyContent()→doAfterBody()→doEndTag()
doStartTag()方法可返回EVAL_BODY_INCLUDE或SKIP_BODY,
如果返回EVAL_BODY_INCLUDE則繼續執行;
如果返回SKIP_BODY則接下來的doInitBody(),setBodyContent(), doAfterBody()三個方法不會被執行,
而直接執行doEndTag()方法。
setBodyContent()方法用於設置標簽體內容,如果在此之前要作一些初始化工作,則在doInitBody()方法中完成。
標簽體內容執行完後,會調用doAfterBody()方法,此方法可返回EVAL_BODY_TAG, SKIP_BODY,
EVAL_PAGE或SKIP_PAGE。
如果返回EVAL_BODY_TAG則會再次設置標簽體內容,直到返回SKIP_BODY;
如果返回EVAL_PAGE則標簽體執行完後會繼續執行JSP頁面中接下來的部分;
如果返回SKIP_PAGE,則JSP頁面的後續內容將不再執行。
標簽中靜態常量:
EVAL_BODY_INCLUDE:告訴服務器正文的內容,並把這些內容送入輸出流
SKIP_BODY:告訴服務器不要處理正文內容
EVAL_PAGE:讓服務器繼續執行頁面
SKIP_PAGE:讓服務器不要處理剩余的頁面
EVAL_BODY_AGAIN:讓服務器繼續處理正文內容,只有doAfterBody方法可以返回
EVAL_BODY_BUFFERED:BodyTag接口的字段,在doStartTag()返回
EVAL_BODY_INCLUDE、SKIP_BODY一般由doStartTag()返回,而EVAL_PAPGE、SKIP_PAGE由doEndTag()返回