簡體   English   中英

JSP 模板的任何類型安全替代品

[英]Any Type-safe alternatives to JSP templating

有什么比 JSP 更安全的東西嗎? 我還沒有通過谷歌找到任何有意義的答案。 我們目前使用 Spring MVC 框架和 JSP 來呈現 HTML。 我開始討厭 JSP 渲染的動態特性,因為您引用了一個像${model.someAttribute}這樣的模型,但無法判斷該屬性是否在給定模塊中可用或指定模型的類型模板期望。 重構模型的 getter 變得非常困難,因為 Eclipse 不知道哪些模板使用模型,也無法將 getter 與模板中的屬性訪問器相關聯。

有沒有一種模板技術,它既沒有通過命令式代碼輸出 HTML 代碼那么丑陋,又比 JSP 更安全?

您可以使用類型提示,例如 jsp:useBean 中的type 屬性和 JSP 標記文件的屬性聲明(也可能在其他地方,如 JSTL 標記)。 然后,IntelliJ 將為您完成所有基於靜態類型的好工作(准確的代碼完成建議、重構、查找用法、快速顯示 javadoc 等)。

我最近剛剛在JSP 標記文件的上下文中寫了這篇文章。

Lift (基於Scala )提供了一個非常好的模型,將 HTML 布局與實際應用程序代碼(稱為片段)很好地分離。 雖然一開始進入門檻可能很高,但從長遠來看,收益確實很大。 一個很大的好處是它在 JVM 上運行,因此您可以重用大部分 Java 庫和其他代碼。

我相信JXT的目標包括 XSS 安全性和類型模型安全性,並且它被設計為易於從 JSP 過渡到。

他們的管道描述解釋了他們的表達式更接近於 Java 表達式,因此如果您的表達式有類型不匹配,您將得到 Java 式的類型錯誤。

還沒有真正使用過它,但 Twirl (https://www.playframework.com/documentation/2.5.x/JavaTemplates ) 稱自己為“基於 Scala 的類型安全模板引擎”(顯然可以在 Play for Java 中使用) .

引用:

基於 Scala Play 的類型安全模板引擎附帶了 Twirl,這是一個強大的基於 Scala 的模板引擎,其設計靈感來自 ASP.NET Razor。 具體是:

緊湊、富有表現力和流暢:它最大限度地減少了文件中所需的字符數和擊鍵次數,並實現了快速、流暢的編碼工作流程。 與大多數模板語法不同,您無需中斷編碼以在 HTML 中明確表示服務器塊。 解析器足夠聰明,可以從您的代碼中推斷出這一點。 這實現了一個非常緊湊和富有表現力的語法,它干凈、快速並且打字很有趣。

易於學習:它使您能夠以最少的概念快速提高工作效率。 您使用簡單的 Scala 結構和所有現有的 HTML 技能。

不是一種新語言:我們有意識地選擇不創造一種新語言。 相反,我們想讓 Scala 開發人員能夠使用他們現有的 Scala 語言技能,並提供模板標記語法,以實現出色的 HTML 構建工作流。

可在任何文本編輯器中編輯:它不需要特定工具,使您能夠在任何普通的舊文本編輯器中高效工作。

免責聲明:我是Hepek的作者。 目前,它僅支持 Play 框架。

Scalatags 通過構造為您提供安全的 HTML。 最重要的是,Hepek 有非常好的 API 來構建表單、網格、代碼突出顯示等。基本上,它只是 Scala,沒有模板解析,不用擔心變量是否存在.. :)

我認為Rocker正是您一直在尋找的。 它經過編譯,類型安全且快速。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM