JSP,能不能像Ruby/Rails/Erb中的yield, layout, content_for一样工作

Posted

技术标签:

【中文标题】JSP,能不能像Ruby/Rails/Erb中的yield, layout, content_for一样工作【英文标题】:JSP, can it work similar to yield, layout, content_for in Ruby/Rails/Erb 【发布时间】:2011-05-19 13:20:50 【问题描述】:

我试图弄清楚如何最有效地重用 JSP 代码。 我喜欢 Rails/erb 以这种方式工作的方式......具有产量、布局、content_for

例子:

main_layout.erb.html

<html>
  <head><%= yield :head %></head>
  <body><%= yield %></body>
</html>

使用

<% content_for :head do %>
<title>A simple page</title>
<% end %>

<p>Hello, Rails!</p>

在控制器中

layout "main_layout"

使用 JSP(不使用额外的框架)我能达到的最接近的目标是什么?我知道 JSP 包含,但这与产量并不完全相同。 有什么建议吗?

谢谢

【问题讨论】:

JSP 在 ERB 上一无所获。它只是为您提供一些自定义标签并允许您与模型对象进行交互。就我而言,您可以通过返回 JSON 对象并执行 javascript 小部件来利用更多功能。 另一个很棒的 JSP 标记文件答案是 ***.com/a/3257426/37572 【参考方案1】:

我不熟悉 yieldcontent_for 提供的内容,但 JSP tag files 允许您使用比 JSP 包含的更强大的模板页面方式。

示例:

layout.tag

<%@ tag body-content="scriptless" %>
<%@ attribute name="pageTitle" required="true" type="java.lang.String" %>

<html>
<head>
    <title>$pageTitle</title>
</head>
<body>
    <jsp:doBody/>
</body>
</html>

一个单独的 JSP

<%@ taglib prefix="z" tagdir="/WEB-INF/tags" %>
<z:layout pageTitle="A simple page">
    <p>Hello, JSP!</p>
</z:layout>

只需将您的 layout.tag 放在 /WEB-INF/tags 目录中。您可以使用任何可用的前缀,我只是使用“z”作为示例。

【讨论】:

+50000 向我展示了一种无需使用 Tiles 即可像 ERB 一样执行此操作的方法。 这正是我需要的,我不想使用瓷砖 我在标题标签中得到了 $pageTitle。我做错了什么? $ 需要在 EL 的大括号之外。 $pageTitle,不是$pageTitle【参考方案2】:

虽然您提到不希望在股票 jsp 之上使用任何框架,但 Stripes Framework 的 Layout 功能几乎完全符合您的要求。

【讨论】:

以上是关于JSP,能不能像Ruby/Rails/Erb中的yield, layout, content_for一样工作的主要内容,如果未能解决你的问题,请参考以下文章

Tomcat能正常启动,可以访问tomcat主页,却在eclipse中不能访问webapp中的项目的jsp文件,这是啥原因?

我能不能理解成 ssh中service就相当于与jsp+servlet+dao中的servlet???

怎么在JSP页面怎么添加一个类似于Label的控件

关于jsp中的问题

Tomcat正常启动,可以访问tomcat主页,却不能访问webapp中的项目的jsp文件,这是啥原因?

1.谁能简述下Struts中的标记库 要详解 !!!!