2010-11-28 1 views
1

저는 JSTL-spring으로 작업하기 시작했습니다. 그것은 훌륭하지만, 내가 생성 한 HTML 코드를 검토해야합니다. 나는 문자열로 모든 HTML 코드를 추가하는 방법을, 그래서 문자열을 <c:out> 때 나를 브라우저가 잘 그것을 해석, 하나 개의 큰 행을 인쇄,하지만, 난에,에 정확하게 디버깅이 필요하고 깨끗한 코드를 확인하십시오. 즉JSTL-spring이 깨끗한 HTML 코드를 생성하는 방법은 무엇입니까?

나는 해석 된 HTML (안 <br> 태그)에 대한하지 바꿈의 HTML 문자열을 줄 바꿈이 필요합니다. /n을 시도했지만 /n 만 인쇄합니다. 다음 코드 예제입니다

<c:out value="${productThumbnails}" escapeXml="false" /> 
+0

질문도 명확하지 않다 - 당신은 렌더링되는 특정 페이지의 HTML 코드를 인쇄하려고? HTML 코드가 브라우저에서 처리되기를 원하지 않습니까? – anirvan

+0

아니, 내가 그것을 한 줄에 모든 것을 붙여 넣습니다, IRS는 마침내 내게로 읽을 수 생성 된 HTML 코드는, 그 일을하는 방식 메신저의 원인이 원하는, 나는 그것이 오래 걸리는 오류를 확인하고자 할 때. – Ernest

답변

3

이 두 가지 방법은 다음과 같습니다 :

  1. 이 실제로 servletcontainer 특정,하지만 기반 뷰에서

    productThumbnails+="<div class=\"prod_box\">"; 
        productThumbnails+="<div class=\"top_prod_box\"></div>"; 
        productThumbnails+="<div class=\"center_prod_box\">"; 
         productThumbnails+="<div class=\"product_title\"><a href=\"details.html\">"+productTemp.getProductName()+"</a></div>"; 
         productThumbnails+="<div class=\"product_title\"><a href=\"details.html\">"+productTemp.getProductModel()+"</a></div>"; 
         productThumbnails+="<div class=\"product_img\"><a href=\"details.html\"><img width=\"90\" alt=\""+productTemp.getProductName()+"\" src=\""+productTemp.getProductImage()+"\"/></a></div>"; 
        productThumbnails+="</div>"; 
    productThumbnails+="</div>"; 
    

    , 내가 가진 모든 것을 인쇄 귀하의 질문 기록은 Tomcat을 사용하고 있습니다. JspServlet 항목에 다음 초기화 매개 변수를 Tomcat/conf/web.xml에 추가하십시오.

    <init-param> 
        <param-name>trimSpaces</param-name> 
        <param-value>true</param-value> 
    </init-param> 
    

    이렇게하면 taglibs (JSTL 등)에 의해 남겨진 모든 공백이 제거됩니다. 이것은 완벽하지는 않지만 일반적으로 충분합니다. 그러나 이는 잘못된 위치 (예 : JSP가 아닌)에 작성된 HTML에는 적용되지 않습니다.

  2. 사용 jTidyFilter. /WEB-INF/libjtidyservlet.jar을 삭제하고 its documentation에 따라 당신의 Webapp/WEB-INF/web.xml에 필터를 선언합니다. 이 문제에 접근하고있는 코멘트로 돌아 오는


: 적절한 접근 방식은 반복하는 JSTL <c:forEach>를 (필요한 경우 스프링 빈으로) 요청 범위에 List<Product>을 넣어 사용하는 것 그것.

<c:forEach items="${products}" var="product"> 
    ... 
    <div class="center_prod_box"> 
     <div class="product_title"><a href="details.html"><c:out value="${product.productName}" /></a></div> 
     <div class="product_title"><a href="details.html"><c:out value="${product.productModel}" /></a></div> 
     <div class="product_img"><a href="details.html"><img width="90" alt="${product.productName}" src="${product.productImage}"/></a></div> 
    </div> 
    ... 
</c:forEach> 

이렇게하면 깨끗하고 유지 관리가 쉬운 코드 (및 HTML 출력;)가 생성됩니다.

+0

와우! 큰 응답, 그들 중 3 명! 고맙습니다! 질문이 있으시면, JspServlet ... 사용하고 있지 않습니다. jstlViewResolver를 호출하는 디스패처 서블릿 만 web.xml에 있습니다. 내가 그것에 trimSpaces를 사용할 수있는 어떤 방법이라도? 또한 궁금해하는 인스턴트 메신저 jTidyFilter 날 게으른 몇 가지? 그리고 나는 그것이 미래에 유지되지 않을 것이라는 약간의 두려움을 가지고 있거나 더 느린 어플리케이션을 만들 것이라고 생각합니다. 그것에 관한 당신의 생각은 무엇입니까? 나는 3 차원 및 주요 솔루션이 최고라고 생각하지만,보기 구성 요소를 조금 더 분리하고 연결이 끊어지기를 원합니다. 진화함에 따라 복잡해질 것입니다. – Ernest

+0

'JspServlet'은 webapp이 아닌 servletcontainer 자체의 'web.xml'에 있습니다. Tomcat에서는 Tomcat 설치의'/ conf/web.xml' 폴더에 있습니다. jTidyFilter에 관해서는, 나는 모른다. 나는 HTML 출력을 멋지게 포맷하는 것이별로 중요하지 않기 때문에 결코 사용한 적이 없다. 모든 HTML은 이미 JSP로 잘 포맷되어있다. – BalusC

+0

형님, 고마워요! 알았다! – Ernest