关于这两天的自定义标签

    技术2022-05-11  58

    总结出以下自定义标签流程

    标签运行时问题:

    1. 标签体中间无内容,运行时只执行 doStartTag() -> doEndTag()

    2.标签体中间有内容,setBodyContent(),可以把中间体内容先保存到bodyContent当中,在doAfterBody()方法,可以取出bodyContent中标签体的内容.

    3.标签体中间有内容,在doEndTag()之前(包括当前方法),必须执行bodyContent.writeOut(bodyContent.getEnclosingWriter())方法,使得标签体内容可以输出到页面上

    4.执行方法过程中,return 返回值问题 :

    见流程图, 可以看到, 当执行完doStartTag()时,若标签体中有内容

    return值为EVAL_BODY_BUFFERED时,则会去执行setBodyContent()->doInitBody()->doAfterBody()流程;

    return值为EVAL_BODY_INCLUDE方法则调用doAfterBody()方法;

    return值为SKIP_BODY则执行doEndTag()方法.

    当执行到doAfterBody()方法时,

    return值为EVAL_BODY_AGAIN时,则会重新调用doAfterBody()方法.

    当执行doEndTag()方法时,

    return值为EVEL_PAGE时,则正常执行页面内容;

    return值为SKIP_PAGE时,则将不执行标签体后面的代码,而只显示当前已经解析的HTML页面标签.


    最新回复(0)