[jsp] 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>

안타깝게도 필요한 공간이있는 경우 스트립이 필요할 수도 있으므로 일부 위치에서 중단되지 않는 공간이 필요할 수 있습니다.


답변

servletcontainer가 JSP 2.1 trimDirectiveWhitespaces속성을 지원하지 않는 JspServlet경우 초기화 매개 변수에 대한 설명서 를 참조해야합니다 . 예를 들어 Tomcat 에서는 trimSpacesinit-param을 Tomcat의 truein for 로 설정하여 구성 할 수도 있습니다 .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, 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


답변

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

${"<!--"}
<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>


답변

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

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

그리고 당신의 jsp에서 :

<%@ page trimDirectiveWhitespaces="true" %>


답변

한 단계 더 나아가 빌드시 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가 있는 경로 ( ) 를 조정해야 할 수 있습니다 .


답변

트림 기능을 사용하십시오.

fn:trim(string1)