program story

jsp 출력에서 ​​공백 제거

inputbox 2020. 8. 5. 08:13
반응형

jsp 출력에서 ​​공백 제거


jsp 페이지 출력에서 ​​여분의 공백을 제거하려면 어떻게해야합니까? web.xml에서 전환 할 수있는 스위치가 있습니까? Tomcat 특정 설정이 있습니까?


이를 수행하는 trimWhiteSpaces 지시문이 있습니다.

JSP에서 :

<%@ page trimDirectiveWhitespaces="true" %>

또는 jsp-config 섹션에서 web.xml (서블릿 스펙 2.5부터 작동 함)에 유의하십시오.

<jsp-config>
  <jsp-property-group>
    <url-pattern>*.jsp</url-pattern>
    <trim-directive-whitespaces>true</trim-directive-whitespaces>
  </jsp-property-group>
</jsp-config>

안타깝게도 필요한 공간이 있으면 스트립을 제거해야 할 수도 있으므로 일부 지역에서는 중단되지 않는 공간이 필요할 수 있습니다.


서블릿 컨테이너가 JSP 2.1 trimDirectiveWhitespaces특성을 지원하지 않으면 JspServlet초기화 매개 변수에 대해서는 해당 문서 를 참조해야합니다 . 예를 들어 Tomcat 에서 Tomcat의 trimSpacesinit-param을 truein 으로 설정하여 구성 할 수도 있습니다 .JspServlet/conf/web.xml

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

완전히 다른 대안은 JTidyFilter 입니다. 공백을 제거 할뿐만 아니라 HTML을 올바른 들여 쓰기로 형식화 합니다.


trimDirectiveWhitespaces는 JSP 2.1 이상을 지원하는 서블릿 컨테이너 또는 Tomcat 6의 경우 또는 Tomcat 6 (및 Tomcat 6.0.10과 같은 일부 버전에서는 제대로 구현되지 않음-다른 것에 대해서는 알지 못함)에서만 지원됩니다. trimDirectiveWhitespaces에 대한 자세한 정보는 다음과 같습니다.

http://www.oracle.com/technetwork/articles/javaee/jsp-21-136414.html

그리고 여기

http://raibledesigns.com/rd/entry/trim_spaces_in_your_jsp1


태그를 사용하는 경우 태그를 적용 할 수도 있습니다.

<%@ tag description="My Tag" trimDirectiveWhitespaces="true" %>

그리고 당신의 JSP에 :

<%@ page trimDirectiveWhitespaces="true" %>

직접 요청하는 것이 아니라 jsp 태그 주위에 HTML 주석 태그를 영리하게 배치하고 서블릿 태그 (<% %>) 안에 공백을 넣는 것도 도움이됩니다.

${"<!--"}
<c:if test="${first}">
    <c:set var="extraClass" value="${extraClass} firstRadio"/>
</c:if>
<c:set var="first" value="${false}"/>
${"-->"}<%

%><input type="radio" id="input1" name="dayChooser" value="Tuesday"/><%
%><label for="input1" class="${extraClass}">Tuesday</label>

예를 들어 트림 기능을 사용하십시오.

fn:trim(string1)

톰캣 catalina.properties파일을 추가 / 편집

org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false

참조 : https://confluence.sakaiproject.org/display/BOOT/Install+Tomcat+7


한 단계 더 나아가 빌드 시간에 html 태그 사이의 줄 바꿈 (캐리지 리턴)을 제거 할 수도 있습니다.

예 : 변경 :

<p>Hello</p>
<p>How are you?</p>

으로:

<p>Hello</p><p>How are you?</p>

그렇게하고를 사용하여 다음 maven-replacer-plugin을 설정하십시오 pom.xml.

<plugin>
    <groupId>com.google.code.maven-replacer-plugin</groupId>
    <artifactId>replacer</artifactId>
    <version>1.5.3</version>
    <executions>
        <execution>
            <id>stripNewlines</id>
            <phase>prepare-package</phase>
            <goals>
                <goal>replace</goal>
            </goals>
            <configuration>
                <basedir>${project.build.directory}</basedir>
                <filesToInclude>projectname/WEB-INF/jsp/**/*.jsp</filesToInclude>
                <token>&gt;\s*&lt;</token>
                <value>&gt;&lt;</value>
                <regexFlags>
                    <regexFlag>MULTILINE</regexFlag>
                </regexFlags>
            </configuration>
        </execution>
    </executions>
</plugin>

이는 빌드 디렉토리의 JSP 만 수정하며 소스의 JSP는 건드리지 않습니다.

<filesToInclude>JSP가 있는 경로 ( ) 를 조정해야 할 수도 있습니다 .

참고 URL : https://stackoverflow.com/questions/208736/strip-whitespace-from-jsp-output

반응형