Nice programing

EL의 문자열 연결

nicepro 2020. 12. 31. 23:28
반응형

EL의 문자열 연결


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

EL (Expression Language)의 삼항 연산자 내에서 문자열을 연결하고 싶습니다.

value라는 변수가 있다고 가정합니다. 비어 있으면 기본 텍스트를 사용하고 싶습니다. 그렇지 않으면 정적 텍스트를 추가해야합니다.

${(empty value)? "none" : value + " enabled"}

그러나 이것은 컴파일되지 않습니다. 이것을 작성하는 올바른 방법은 무엇입니까? 아니면 가능할까요?


이 답변은 구식입니다. 기술은 발전했습니다. 레거시 시스템으로 작업하지 않는 한 Joel의 답변을 참조하십시오 .


EL에는 문자열 연결 연산자가 없습니다. 다른 작업에 전달하기 위해 연결된 문자열이 필요하지 않은 경우 다음 식을 서로 옆에두기 만하면됩니다.

${value}${(empty value)? 'none' : ' enabled'}

EL 2를 사용하면 다음을 수행 할 수 있습니다.

#{'this'.concat(' is').concat(' a').concat(' test!')}

이미 EL 3.0 (Java EE 7, WildFly, Tomcat 8, GlassFish 4 등)을 사용중인 경우 새 +=연산자를 사용할 수 있습니다 .

<c:out value="${empty value ? 'none' : value += ' enabled'}" />

그러나 아직 EL 3.0 을 사용 하지 않고 value정품 java.lang.String인스턴스 (따라서 예가 아님 java.lang.Long) 인 경우 EL 2.2 (Java EE 7, JBoss AS 6/7, Tomcat 7, GlassFish 3 등) 호출 기능을 사용하십시오. 인수가있는 직접 메서드를 적용한 다음에 적용합니다 String#concat().

<c:out value="${empty value ? 'none' : value.concat(' enabled')}" />

또는 아직 EL 2.2를 사용하지 않는 경우 JSTL <c:set>을 사용하여 값에 인라인 된 연결된 값으로 새 EL 변수를 만듭니다.

<c:set var="enabled" value="${value} enabled" />
<c:out value="${empty value ? 'none' : enabled}" />

Expression Language 3.0부터 문자열 연결에 + = 연산자를 사용하는 것이 유효합니다.

${(empty value)? "none" : value += " enabled"}  // valid as of EL 3.0

EL 3.0 사양 인용 .

문자열 연결 연산자

평가하려면

A += B 
  • A와 B를 문자열로 강제 변환합니다.
  • A와 B의 연결된 문자열을 반환합니다.

Mc Dowell의 대답 이 맞습니다. 변수 값을 다음과 같이 반환해야하는 경우 개선 사항을 추가하고 싶습니다.

${ empty variable ? '<variable is empty>' : variable }

1. + (연산자)는 EL 사용에 영향을주지 않습니다. 2. 그래서 이것은 그것을 사용하는 방법입니다

<c:set var="enabled" value="${value} enabled" />


<c:out value="${empty value ? 'none' : enabled}" />

이것이 당신에게 도움이 되었습니까?


이 예제와 같이 EL + MAP + JSON 문제에 대해 concat을 사용하는 것도 좋은 아이디어가 될 수 있습니다.

# {myMap [ ''. concat (myid)]. content}

참조 URL : https://stackoverflow.com/questions/3640254/string-concatenation-in-el

반응형