2012-01-17 2 views
4

나는 fn을 호출하고 싶다 : 인용 부호를 대체하기 위해 c : out 안의 EL 내부를 바꾼다. cout을 태그 종료 (JSP 컴파일 단계 오류) : XML 파서가 처음 따옴표에서 멈추고 더 C를 볼 수 없기 때문에JSTL/EL 표현식에서 작은 따옴표와 큰 따옴표를 모두 사용하는 방법은 무엇입니까?

다음은

<c:out value="${fn:replace(userName,'"','\\"')}"/> 

작동하지 않습니다.

때문에 아마 실제 인용 문자가 표시되지 않는 기능을 대체
<c:out value="${fn:replace(userName,'&quot;','\\&quot;')}"/> 

이 작동하지 않습니다 다음과 같습니다.

답변

5

<c:set>으로 매개 변수화하십시오. 구체적인 질문에

<c:set var="search" value='"' /> 
<c:set var="replace" value='\\"' /> 
<c:out value="${fn:replace(userName, search, replace)}"/> 

관련없는 , 아직도 considered 당신은 실제 JSON 생성기가? 이 user가 fullworthy 자바 빈즈 것을 주어, 다음 oneliner의 문제 예를 GSON을 위해 함께 :

String json = new Gson().toJson(user); 

당신은 얻을 것이다 구문 적으로 유효한 JSON 직접 유효한 JSON을 생산하는 JSP/JSTL/EL을 얻기 위해 모든 방법을 조롱하지 않고 .

+0

네, 감사합니다. JSTL/EL에 그러한 기능이 부족한지 궁금합니다. – Dims

+0

어쩌면 당신은 단지 작업에 잘못된 도구를 사용하고 있습니다.) JSP는 동적으로 ** HTML **을 생성하도록 설계된 뷰 기술 일뿐입니다. JSTL/EL은 그 목적에 맞게 간소화되었습니다. – BalusC

+0

흠 ... 때로는 반복 루프에서 JSON을 생성합니다 ... Gson이 처리 할 수 ​​있지만 전송하기 전에 임시 개체에서 데이터를 수집하는 것이 아름답다고 느낄 것이라고 확신합니다 ... 또한 json 있지만 xml뿐만 아니라 생성하고 있습니다 또한 ... 따라서 모든 상호 작용을위한 JSP를 많이 가지고 생각이었습니다 ... – Dims

관련 문제