2010-12-06 3 views
1

freemarker와 함께 java를 사용하여 FTL (템플릿 파일) 및 XML을 통해 HTML 파일을 생성합니다. 여러 파일에서 결과를 얻었지만 각 파일에는 전체 결과가 포함되어 있습니다. 각 파일에 자체 결과가 포함되기를 원합니다. 당신에게 자세한 내용을주고 내 자바 코드의이 부분을 살펴보고 : 당신의 도움에 대한FileWriter에서 Java의 여러 파일에 문제가 발생했습니다.

static void freemarkerDo(Map datamodel, String template) throws Exception{ 
    try { 
     File file = new File("Avis.xml"); 
     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder db = dbf.newDocumentBuilder(); 
     Document doc = db.parse(file); 
     doc.getDocumentElement().normalize(); 
     NodeList nodeLst = doc.getElementsByTagName("Avis"); 

     Configuration cfg = new Configuration(); 

     Template tpl = cfg.getTemplate(template); 



     for (int s = 0; s < nodeLst.getLength(); s++) { 

     Node fstNode = nodeLst.item(s); 

     if (fstNode.getNodeType() == Node.ELEMENT_NODE) { 

      Element fstElmnt = (Element) fstNode; 
      NodeList flNmElmntLst = fstElmnt.getElementsByTagName("Filename"); 
      Element flNmElmnt = (Element) flNmElmntLst.item(0); 
      NodeList flNm = flNmElmnt.getChildNodes(); 
      FileWriter writer = new FileWriter(((Node) flNm.item(0)).getNodeValue()+".html"); 

      try { 
       tpl.process(datamodel, writer); 
       } 
      finally{ 
       writer.close(); 
        } 
                 } 



     } 
     } catch (Exception e) { 
     e.printStackTrace(); 
     } 

}

감사합니다 (이 솔루션은 너무 쉽게해야하지만 난 그것을 찾을 수 없습니다).

+0

나는 당신이하려는 것을 매우 혼란스럽게 생각합니다. 각 파일마다 고유 한 결과를 원한다면 무엇을 의미합니까? 각 파일은 데이터 모델을 소유해야합니까? – Andy

답변

1

이 메서드가 무엇인지, 또는 데이터 모델이 설정되어 있는지 알 수는 없지만 전체 데이터 모델을 전달하는 것처럼 보일 수 있습니다. 그러면 각 파일에 전체 데이터 모델이있는 이유를 설명 할 수 있습니다.

tpl.process(datamodel, writer); // does what, with what? 

코드를 디버깅 할 때 무엇이 ​​보입니까?

+0

이 메서드는 freemarker를 사용하여 템플릿을 처리하고 결과를 생성합니다. tpl.process (datamodel, writer); 이 템플릿을 데이터 모델과 병합하십시오. – Amin

+1

예, 코드에는 항상 동일한 템플릿이 있습니다. 동일한 템플릿 + 동일한 데이터 모델 = 동일한 결과. – Istao

관련 문제