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
'Program Club' 카테고리의 다른 글
| 바람둥이 포트 번호 변경 방법 (0) | 2020.10.20 |
|---|---|
| Browserify, Babel 6, Gulp-스프레드 연산자에 예기치 않은 토큰 (0) | 2020.10.20 |
| R의 파일이 아닌 문자열 값에서 읽기 위해 read.csv를 사용하는 방법이 있습니까? (0) | 2020.10.20 |
| 자바 스크립트 : 숫자의 x % 계산 (0) | 2020.10.20 |
| Grand Central Dispatch에서 dispatch_sync 사용 (0) | 2020.10.20 |