BodyTagSupport,包括SKIP_PAGE, EVAL_PAGE等

原帖:http://oyprunner.iteye.com/blog/539494

http://blog.csdn.net/achun2050/article/details/1568582 

  1. EVAL_BODY_INCLUDE:把Body讀入存在的輸出流中,doStartTag()函數可用   
  2. EVAL_PAGE:繼續處理頁面,doEndTag()函數可用   
  3. SKIP_BODY:忽略對Body的處理,doStartTag()和doAfterBody()函數可用   
  4. SKIP_PAGE:忽略對餘下頁面的處理,doEndTag()函數可用   
  5. EVAL_BODY_TAG:已經廢止,由EVAL_BODY_BUFFERED取代   
  6. EVAL_BODY_BUFFERED:申請緩衝區,由setBodyContent()函數得到的BodyContent對象來處理tag的body,如果類實現了BodyTag,那麼doStartTag()可用,否則非法   

 

  1. BodyTagSupport類的方法:   
  2. 編寫標籤對應的實現類時,需要重載BodyTagSupport類幾個方法:doStartTag(), setBodyContent(), doInitBody(), doAfterBody(), doEndTag();   
  3.   
  4.   
  5. 他們執行順序如下:   
  6. doStartTag()→doInitBody()→setBodyContent()→doAfterBody()→doEndTag()   
  7.   
  8.   
  9. doStartTag()方法可返回EVAL_BODY_INCLUDE或SKIP_BODY,   
  10. 如果返回EVAL_BODY_INCLUDE則繼續執行;   
  11. 如果返回SKIP_BODY則接下來的doInitBody(),setBodyContent(), doAfterBody()三個方法不會被執行,   
  12. 而直接執行doEndTag()方法。   
  13.   
  14. setBodyContent()方法用於設置標籤體內容,如果在此之前要作一些初始化工作,則在doInitBody()方法中完成。   
  15. 標籤體內容執行完後,會調用doAfterBody()方法,此方法可返回EVAL_BODY_TAG, SKIP_BODY,   
  16. EVAL_PAGE或SKIP_PAGE。   
  17. 如果返回EVAL_BODY_TAG則會再次設置標籤體內容,直到返回SKIP_BODY;   
  18. 如果返回EVAL_PAGE則標籤體執行完後會繼續執行JSP頁面中接下來的部分;   
  19. 如果返回SKIP_PAGE,則JSP頁面的後續內容將不再執行。   
  20.   
  21. 標籤中靜態常量:   
  22.   
  23. EVAL_BODY_INCLUDE:告訴服務器正文的內容,並把這些內容送入輸出流   
  24. SKIP_BODY:告訴服務器不要處理正文內容   
  25. EVAL_PAGE:讓服務器繼續執行頁面   
  26. SKIP_PAGE:讓服務器不要處理剩餘的頁面   
  27. EVAL_BODY_AGAIN:讓服務器繼續處理正文內容,只有doAfterBody方法可以返回   
  28. EVAL_BODY_BUFFERED:BodyTag接口的字段,在doStartTag()返回   
  29. EVAL_BODY_INCLUDE、SKIP_BODY一般由doStartTag()返回,而EVAL_PAPGE、SKIP_PAGE由doEndTag()返回。

 

 

 

SKIP_BODY隱含0    :跳過了開始和結束標籤之間的代碼。  
EVAL_BODY_INCLUDE隱含1:將body的內容輸出到存在的輸出流中   
SKIP_PAGE隱含5  :  忽略剩下的頁面。  
EVAL_PAGE隱含6:繼續執行下面的頁  
---------------------------------------------------------------  
 
 後一:
doStartTag()和doEndTag()返回值是在Tag  Interface裏定義的靜態int  
 
SKIP_BODY隱含0      
 
Skip  body  evaluation.  Valid  return  value  for  doStartTag  and  doAfterBody.  跳過對body的處理。  
 
就是跳過了開始和結束標籤之間的代碼。  
 
   
 
EVAL_BODY_INCLUDE  隱含1    
 
Evaluate  body  into  existing  out  stream.  Valid  return  value  for  doStartTag.    
 
This  is  an  illegal  return  value  for  doStartTag  when  the  class  implements  BodyTag,  
 
   since  BodyTag  implies  the  creation  of  a  new  BodyContent.  
 
   將body的內容輸出到存在的輸出流中。包括是jsp代碼,也可以被輸出  
 
 SKIP_PAGE    隱含5      
 
 Skip  the  rest  of  the  page.  Valid  return  value  for  doEndTag.  
 
 忽略剩下的頁面。  
 
EVAL_PAGE    隱含6  
 
Continue  evaluating  the  page.  Valid  return  value  for  doEndTag().  
 
 在doStartTag()方法中,若返回EVAL_BODY_INCLUDE就計算標籤的body  
  若返回SKIP_BODY就不計算標籤的body  
   
  在doEndTag()方法中,若返回EVAL_PAGE容器在標籤結束時繼續計算jsp頁面的其它部分,  
  若返回SKIP_PAGE則在標籤結束時停止計算jsp頁面其他的部分。  
   
  當你實現了BodyTag接口時,也就是你進行帶body標籤的開發時,有doAfterBody()方法。  
  當返回EVAL_BODY_TAG時,表示繼續計算一次BodyTag,直到返回SKIP_BODY纔會調用doEndTag()方法在doStartTag()方法中,若返回EVAL_BODY_INCLUDE就計算標籤的body  
  若返回SKIP_BODY就不計算標籤的body   

 

發佈了97 篇原創文章 · 獲贊 3 · 訪問量 35萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章