2011-12-30 5 views
1

제목의 모든 것이 거의 같습니다. 이 호출의 결과에 대한 문서는 명확하지 않습니다.JspFragment.invoke는 정확히 무엇을합니까?

필자의 특별한 상황은이 메서드가 매개 변수로 전달 된 null로 호출되고 그 전후에 코드가 있다는 것입니다. 나는이 호출의 목적을 얻지 못한다 ...
컨텍스트는 SimpleTagSupport를 확장하는 클래스이다. (나는 taglib 일을하고있다.)

어떤 포인터 주셔서 감사합니다. 여기서, 자바 독은 :

public abstract void invoke(java.io.Writer out) 
        throws JspException, 
          java.io.IOException 

    Executes the fragment and directs all output to the given Writer, or the JspWriter returned by the getOut() method of the JspContext associated with the fragment if out is null. 

    Parameters: 
     out - The Writer to output the fragment to, or null if output should be sent to JspContext.getOut(). 
    Throws: 
     JspException - Thrown if an error occured while invoking this fragment. 
     SkipPageException - Thrown if the page that (either directly or indirectly) invoked the tag handler that invoked this fragment is to cease evaluation. The container must throw this exception if a Classic Tag Handler returned Tag.SKIP_PAGE or if a Simple Tag Handler threw SkipPageException. 
     java.io.IOException - If there was an error writing to the stream. 

답변

1

음을 호출, 상기 태그는하기를 원할 때 실행하는 JSP 단편 (태그 본체)를 수신하는 태그 수있다. 예를 들어, 조건 인수를 받고 태그 본문이있는 if 태그를 디자인 할 수 있습니다. 조건이 false이면 태그는 아무 것도하지 않습니다. true이면 태그가 조각을 호출합니다. loop 태그는 iterationCount 인수가 요청할 때마다 해당 부분을 호출 (본문에있는 JSP 코드를 실행) 할 수 있습니다.

조각이 응답에 포함 할 HTML 코드를 생성하는 데 사용되기 때문에이 메서드의 out 인수는 조각의 출력이 생성되는 곳입니다. 예를 들어 프래그먼트를 JSP 라이터에 직접 쓰지 않고, 프래그먼트가 생성하는 것을 후 처리하려면 다른 라이터를 전달할 수 있습니다.

+0

본문이 전혀없는 태그 (태그 속성을 읽음으로써 html로만 변환 됨)에있는 경우이 호출은 아무런 효과가 없습니까? – Sephy

+0

태그가 본문을 승인하지 않으면 javadoc을 올바르게 읽으면 조각이 null이됩니다. 본문이 있지만 문자가 포함되어 있지 않으면 효과가 없습니다. 공백이 있으면 공백이 작성자에게 기록됩니다. –

+0

그래, 내가 아직도 내 코드에이 이유가 없더라도 조금 더 명확 해. 감사! – Sephy

관련 문제