2010-08-04 4 views
1

그래서, 이미 설정된 코드 인 StringBuilder 요소에서 return 매개 변수를 얻고 있습니다.이를 GWT 응용 프로그램에 삽입해야합니다. 이 StringBuilder 요소는 반환되기 전에 표 형식으로 지정되었습니다.StringBuilder 요소를 GWT 앱에 삽입하는 방법은 무엇입니까?

더 명확히하기 위해 StringBUilder이 생성되는 방법과 반환되는 코드는 다음과 같습니다.

private static String formatStringArray(String header, String[] array, int[] removeCols) { 
    StringBuilder buf = new StringBuilder("<table bgcolor=\"DDDDDD\" border=\"1\" cellspacing=\"0\" cellpadding=\"3\">"); 

    if (removeCols != null) 
     Arrays.sort(removeCols); 

    if (header != null) { 
     buf.append("<tr bgcolor=\"99AACC\">"); 
     String[] tokens = header.split(","); 
     //StringTokenizer tokenized = new StringTokenizer(header, ","); 
     //while (tokenized.hasMoreElements()) { 
     for (int i = 0; i < tokens.length; i++) { 
      if (removeCols == null || Arrays.binarySearch(removeCols, i) < 0) { 
       buf.append("<th>"); 
       buf.append(tokens[i]); 
       buf.append("</th>"); 
      } 
     } 
     buf.append("</tr>"); 
    } 

    if (array.length > 0) { 
     for (String element : array) { 
      buf.append("<tr>"); 
      String[] tokens = element.split(","); 
      if (tokens.length > 1) { 
       for (int i = 0; i < tokens.length; i++) { 
        if (removeCols == null || Arrays.binarySearch(removeCols, i) < 0) { 
         buf.append("<td>"); 
         buf.append(tokens[i]); 
         buf.append("</td>"); 
        } 
       } 
      } else { 
       // Let any non tokenized row get through 
       buf.append("<td>"); 
       buf.append(element); 
       buf.append("</td>"); 
      } 
      buf.append("</tr>"); 
     } 
    } else { 
     buf.append("<tr><td>No results returned</td></tr>"); 
    } 

    buf.append("</table>"); 
    return buf.toString(); 
} 

그래서, 위, buf.toString();는 GWT 클래스에서 수신하는 것입니다 반환 된 패널에 추가되고 표시 ... 이제 질문은 : 어떻게 모든 일이 일어날 수 있도록?

저는 초보자로서 절대적으로 우둔하고 어떤 도움을 주셔서 감사합니다.

감사합니다,
Chirayu

+0

왜 문자열로 HTML 엔터티를 만드나요? 읽을 수있는 Java 코드를 사용하여 (클라이언트 측에서) GWT UI 가젯을 만들고 필요에 따라 빌드 할 수 있습니다. –

+0

@Eyal, 귀하의 조언을 주셔서 감사합니다, 나는 StringBuilder 요소를 반환하고 내가하고있는 GWT 부분에 통합 이미 작성된 코드를 사용하려고했습니다. 기존 코드는 다소 복잡합니다. 곧 인턴쉽을 시작하며 곧 마감됩니다. 어쨌든 고마워. – Chirayu

답변

1

당신이 Chirayu 더 구체적인 수 있을까? "이미 설정된 코드"(서버 측 또는 클라이언트 측에서 실행되는 serlvet입니까?)는 StringBuilder을 반환하며 분명히 String을 반환하며 GWT-RPC, JSON 등을 통해 쉽게 전송할 수 있습니다.
그러나 Eyal이 언급 한 것처럼 "당신은 잘못하고있다"- 직접 작성한 HTML 코드는 추가 작업으로 security holes (XSS 등)으로 이어지고 오류가 발생하기 쉽습니다. 올바른 방법은 다음과 같습니다

  • 대신에 (내가 위의 코드는 서버에서 실행되고 있으리라 믿고있어) 서버에서보기/HTML 코드를 생성하는, 당신은 단지 관련 데이터를 가져 - any transport을 통해 자료를 사용할 수 GWT에서
  • 클라이언트에서 서버의 데이터를 멋진 위젯에 넣습니다. HTML로 직접 작업하는 것을 선호한다면 UiBinder을 확인하십시오. 그렇지 않으면 이전 widgets, composites, etc 길도 괜찮습니다.

이렇게하면 클라이언트와 서버간에 전송되는 데이터가 최소화되고 더 잘 분리됩니다 (자세한 내용은 MVP 참조). 또한 서버 부하가 적습니다 (win-win).

그리고 초보자 인 것을 그만두려면 RTFM이 있어야합니다. 여기에 제공된 모든 링크는 공식 문서로 연결됩니다.

+0

"그리고 초보자가되는 것을 멈추려면"심리 치료사로서 꽤 잘 할 것입니다. –

+0

고마워요, 애쉬 윈, 항상 백업 계획을 갖고 있는게 좋네요.) 가장 간단한 문제조차도 도와 주겠다. 내가 묻지 않는 사람이 숙제를하지 않았다는 것을 알지 못한다면 (예, 나는 선생님처럼 들립니다.) 다른 한편으로 나는 Chirayu에 대해 질투심에 차있다. 왜냐하면 GWT 인턴쉽을 위해 GWT를 사용하기 때문이다 : GWT의 한가운데에 쑤셔 들어가는 것이 혼란 스러울 수있다. 간단한 응용 프로그램, 갑자기 당신은 MVP, UiBinder, 다른 전송, 보안 함축, 최적화 트릭 등을 알아야합니다.) –

+0

@Ashwin, 나는 너를 괴롭 히고 싶지만 슬프게도 초보자이다. READ : ASS), 당신은 전문가입니다. @Igor, 숙제를 끝내지는 못했지만 인턴쉽시 Java 개발 환경에 이미 존재하는 코드로 던져진 C/C++ 개발자, m 정수 GWT. 슬프게도 나는 붙어있어 7 일 남았으며 일을 마무리하려고 혼란스러워했다. – Chirayu

관련 문제