Program Club

JSP EL 문자열 연결

proclub 2020. 10. 20. 18:48
반응형

JSP EL 문자열 연결


이 질문에 이미 답변이 있습니다.

EL에서 문자열을 어떻게 연결합니까?

나는 이와 같은 것을하고 싶지만 작동하지 않습니다.

${var1 == 0 ? 'hi' : 'hello ' + var2}

캐스트하려고하는 예외가 발생 'hello'합니다.Double


+운영자는 항상 JSP 엘에서 수치 추가를 의미한다. 문자열 연결을 수행하려면 ${str1}${str2}. 예를 올바르게 읽으면 다음과 같이 쓸 수 있습니다.

${var1 == 0 ? 'hi' : 'hello '}${var1 == 0 ? '' : var2}

편집 : 또 다른 가능성은 jstl을 사용하는 것입니다. 이는 더 길지만 var1다음에 의존하는 텍스트가 더 있으면 더 명확해질 수 있습니다 .

<c:choose>
    <c:when test="${var1 == 0}">hi</c:when>
    <c:otherwise>hello <c:out value="${var2}"/></c:otherwise>
</c:choose>

c:out는 JSP 버전에 따라, 필요하지 않을 수도 있습니다.


Java 문자열 연결을 사용하면 더 잘 작동합니다.

#{var1 == 0 ? 'hi' : 'hello'.concat(var2)}

여기서 이점은 예를 들어 이것을 함수에 전달할 수도 있다는 것입니다.

#{myCode:assertFalse(myVar == "foo", "bad myVar value: ".concat(myVar).concat(", should be foo"))}

나는 이것이 오래된 주제라는 것을 알고 있지만,이 질문에 대한 답은 지난 6 개월 동안 변경되었으며, IMO라는 변화에 주목하는 것이 중요합니다 (인터넷 검색에서 "el concatenate strings"를 검색했기 때문에).

EL Expression 3.0 (2012 년 8 월에 승인 된 공개 투표지, Java EE 7과 함께 출시됨)부터 질문자가 원래 사용했던 구문의 변형이 이제 유효합니다.

${var1 == 0 ? 'hi' : 'hello ' += var2}

+=대신을 사용하는 것에 대해 많은 의견이 일치하지 +않았지만 그것이 바로 그 자체입니다. 이것은 예상대로 문자열을 올바르게 평가하고 연결합니다. cat연산자 대신 연산자를 사용할 수도 있습니다 +=.

${var1 == 0 ? 'hi' : 'hello ' cat var2}

이것은 현재 합법적이지만 웹 컨테이너 (Tomcat, Jetty, GlassFish 등)가 Java EE 7 / EL 3.0을 지원하는 새 버전을 릴리스 할 때까지 사용할 수 없습니다. 이는 2013 년 말 이전, 아마도 빠르면 가을에 예상됩니다.

최종 운영자가 원래 답변 +=과 같지 않음 +알리기 위해 2015-02-19수정 되었습니다 .


이미 언급 된 모든 것에 대한 또 다른 대안 :

<c:set var="hellovar2" value="hello ${var2}" />
${var1 == 0 ? 'hi' : hellovar2}

참고 URL : https://stackoverflow.com/questions/3189642/jsp-el-string-concatenation

반응형