我想弄清楚如何最優雅地將PHP的nl2br()函數整合到使用JSF2/Spring完成的當前項目中。我可以很容易地在我的模型類中使用類似return text.replaceAll("\n","<br/>");
的方式創建getter,但是這看起來好像將與視圖相關的代碼放在不屬於它的地方。我對於在我的數據庫中存儲實際的html內容有同樣的感覺。 我想最乾淨的解決方案將使用標籤/ EL爲此,但我找不到似乎這樣做的東西。你們會如何實現這樣的事情?預先感謝您,任何提示都非常感謝!JSF2中的nl2br沒有違反MVC範式?
回答
使用任何CSS結束,假設文本中不包含任何HTML
<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。
那麼,首先JSF是一個Web UI框架。所以,你期望輸出給用戶的任何東西都會以HTML結尾(儘管只有javascript的例外)。所以,我不認爲它嚴重違反了MVC(如果有的話)。也許你甚至可以把信封並直接使用<br/>
裏面的文字,而不是替換\n
在更普遍的意義上說,如果你在你的文字有不同的行/段落中,更靈活/標準溶液會被打破你不同元素中的文本並讓您的表示邏輯處理它。所以,與其用
presentationPage.introductionText=Ipse Lorum ...sum.\nVini vidi vinci.
一個屬性您將與
presentationPage.introductionText.par1=Ipse Lorum ...sum.
presentationPage.introductionText.par2=vini vidi vinci.
感謝您的回答,但作爲後端是純java,我可以生成幾乎任何視圖格式,不僅html。你提出的解決方案几乎是我所做的,因爲它似乎是最乾淨的方式,但是如果內容應該可以通過前端進行編輯,它不是一個很好的選擇... – user871784
你應該告訴它它是用戶生成的內容,我在想更多的應用程序靜態內容。用戶代碼必須能夠從多個接口訪問,您必須以某種方式進行標準化,並使「客戶端」接口保持不變;分頁符「\ n」與其他任何解決方案一樣好,而且更容易理解。 – SJuan76
謝謝,至於現在它實際上是靜態網站內容,但我想爲這類東西提供類似於標準概念的東西,這些東西也可用於用戶生成的內容或任何可能需要的內容。但是,謝謝你,你肯定幫我澄清了我的話題!乾杯 – user871784
- 1. ReferenceError回調沒有違反
- 2. 常量表達式違反子範圍
- 3. 線在IE(Flexbox的)沒有違反
- 4. 有沒有像ASP.NET MVC的PHP函數nl2br()?
- 5. 有沒有可能在ABAP中違反反射封裝?
- 6. 調試設計模式在Visual Studio中沒有違反
- 7. 在聲明的函數中使用'this'嚴格違反,沒有違反函數表達式
- 8. 解決方案沒有違反
- 9. JSF2:沒有javascript的commandLink
- 10. 保持AVTransport:違反UPnP規範
- 11. JSF2 facelets和mvc
- 12. Rails閃存哈希違反MVC?
- 13. 郵政編碼和郵政編碼違反第三範式嗎?
- 14. 服務器控件如何違反MVC設計模式?
- 15. JSF2 preRenderView沒有觸發
- 16. 違反MySQL中的1NF
- 17. 瞭解JSF2中的Flash範圍
- 18. IClientValidatable實現是否違反了MVC中的DRY原則?
- 19. 違反封裝?
- 20. 違反外鍵
- 21. PK違反
- 22. CollectionViewSource違反MVVM
- 23. NodeJS違反Promise
- 24. PMD UselessParentheses違反
- 25. 堆違反
- 26. SQL違反
- 27. 違反約束?
- 28. 沒有重複,但仍然違反約束的錯誤
- 29. 的UILabel沒有違反.byWordWrapping時字體大小太大
- 30. php nl2br反之亦然問題
完美謝謝! – user871784