BodyTagSupport類的方法: 編寫標(biāo)簽對(duì)應(yīng)的實(shí)現(xiàn)類時(shí),需要重載BodyTagSupport類幾個(gè)方法:doStartTag(), setBodyContent(), doInitBody(), doAfterBody(), doEndTag(); 他們執(zhí)行順序如下: doStartTag()→doInitBody()→setBodyContent()→doAfterBody()→doEndTag() doStartTag()方法可返回EVAL_BODY_INCLUDE或SKIP_BODY, 如果返回EVAL_BODY_INCLUDE則繼續(xù)執(zhí)行; 如果返回SKIP_BODY則接下來(lái)的doInitBody(),setBodyContent(), doAfterBody()三個(gè)方法不會(huì)被執(zhí)行, 而直接執(zhí)行doEndTag()方法。 setBodyContent()方法用于設(shè)置標(biāo)簽體內(nèi)容,如果在此之前要作一些初始化工作,則在doInitBody()方法中完成。 標(biāo)簽體內(nèi)容執(zhí)行完后,會(huì)調(diào)用doAfterBody()方法,此方法可返回EVAL_BODY_TAG, SKIP_BODY, EVAL_PAGE或SKIP_PAGE。 如果返回EVAL_BODY_TAG則會(huì)再次設(shè)置標(biāo)簽體內(nèi)容,直到返回SKIP_BODY; 如果返回EVAL_PAGE則標(biāo)簽體執(zhí)行完后會(huì)繼續(xù)執(zhí)行JSP頁(yè)面中接下來(lái)的部分; 如果返回SKIP_PAGE,則JSP頁(yè)面的后續(xù)內(nèi)容將不再執(zhí)行。 標(biāo)簽中靜態(tài)常量: EVAL_BODY_INCLUDE:告訴服務(wù)器正文的內(nèi)容,并把這些內(nèi)容送入輸出流 SKIP_BODY:告訴服務(wù)器不要處理正文內(nèi)容 EVAL_PAGE:讓服務(wù)器繼續(xù)執(zhí)行頁(yè)面 SKIP_PAGE:讓服務(wù)器不要處理剩余的頁(yè)面 EVAL_BODY_AGAIN:讓服務(wù)器繼續(xù)處理正文內(nèi)容,只有doAfterBody方法可以返回 EVAL_BODY_BUFFERED:BodyTag接口的字段,在doStartTag()返回 EVAL_BODY_INCLUDE、SKIP_BODY一般由doStartTag()返回,而EVAL_PAPGE、SKIP_PAGE由doEndTag()返回。 |