2012-11-23 4 views
0

저는 PHP의 nl2br() 함수를 JSF2/Spring을 사용하여 현재 프로젝트에 가장 우아하게 통합하는 방법을 알아 내려고하고 있습니다. 내 모델 클래스에서 return text.replaceAll("\n","<br/>");과 같은 것을 사용하여 게터를 쉽게 만들 수는 있지만 속하지 않는 곳에 관련 코드를 표시하는 것처럼 보입니다. 나는 내 데이터베이스에 실제 html 콘텐츠를 저장하는 것에 대해 동일한 감정을 가지고있다. 내가 가장 깨끗한 솔루션은 태그/EL을 사용하는 것 같아요,하지만 난 그냥 할 것 같았다 뭔가를 찾을 수 없습니다. 어떻게 이런 식으로 구현할 수 있니? 미리 감사드립니다. 어떤 힌트라도 높이 평가됩니다!MVF 패러다임을 위반하지 않고 JSF2에서 nl2br을 사용 하시겠습니까?

답변

1

사용하거나 CSS로 끝나는 것

<div style="white-space: pre">#{bean.text}</div> 

또는 create a custom EL function 다음 이스케이프 처리되지 않음 (Facelets에서 암시 적으로 HTML 이스케이프 처리)

<div><h:outputText value="#{my:nl2br(bean.text)}" escape="false" /></div> 

반드시 free of XSS이어야합니다.

+0

완벽한 감사합니다 !!! – user871784

1

글쎄, JSF는 웹 UI 프레임 워크입니다. 따라서 사용자에게 출력 할 것으로 예상되는 내용은 HTML로 종료됩니다 (단, 자바 스크립트 만 제외). 그래서 MVC에 중대한 위반이있는 것은 아닙니다. 어쩌면 당신은 봉투를 밀고 대체 대신에 <br/>을 사용할 수 있습니다 \n

보다 일반적인 의미에서, 텍스트가 다른 줄/단락을 사용하면 더 유연한/표준 해결책으로 인해 텍스트를 다른 요소에 넣고 프리젠 테이션 로직이 처리하도록하십시오. 그래서, 대신

presentationPage.introductionText=Ipse Lorum ...sum.\nVini vidi vinci. 

과 특성의 당신은 텍스트가 어떤 HTML을 포함하지 않는 것으로 가정

presentationPage.introductionText.par1=Ipse Lorum ...sum. 
presentationPage.introductionText.par2=vini vidi vinci. 
+0

답변을 주셔서 감사합니다. 그러나 백엔드가 순수한 자바이기 때문에 HTML뿐만 아니라 모든 뷰 형식을 생성 할 수 있습니다. 당신이 제안한 솔루션은 가장 깨끗한 방법 인 것처럼 보이기 때문에 내가 한 일을 꽤 많이했지만, 프론트 엔드를 통해 내용을 편집 할 수 있다면 매우 좋은 선택은 아닙니다. – user871784

+0

사용자 생성 된 콘텐츠, 나는 더 많은 정적 콘텐츠 응용 프로그램을 생각하고 있었다. 여러 인터페이스에서 액세스 할 수 있어야하는 사용자 코드를 사용하려면 어떤 방식으로 표준화해야하고 "클라이언트"인터페이스를 그대로 사용해야합니다. 페이지 나누기를위한'\ n'은 다른 솔루션만큼 좋으며 이해하기 쉽습니다. – SJuan76

+0

고맙습니다. 현재는 정적 인 사이트 콘텐츠입니다.하지만 사용자 생성 콘텐츠 나 필요할 경우 어떤 것이 든 사용할 수있는 이런 종류의 표준 컨셉과 비슷한 것을 갖고 싶습니다. 하지만 고마워, 나에게 화제를 분명히하도록 분명히 도와 줬어! 건배 – user871784

관련 문제