请在回答之前阅读。这是我梦寐以求的幻想编程技巧。我想知道现实生活中是否有什么特别的东西。
以下JSP页面:
<%
html {
head {
title {"Pure fantasy";}
}
body {
h1 {"A heading with double quote (\") character";}
p {"a paragraph";}
String s = "a paragraph in string. the date is ";
p {
s;
new Date().toString();
}
table (Border.ZERO, new Padding(27)) {
tr {
for (int i = 0; i < 10; i++) {
td {i;}
}
}
}
}
}
%>
可以生成以下HTML页面:
<html>
<head>
<title>Pure fantasy</title>
</head>
<body>
<h1>A heading with double quote (") character</h1>
<p>a paragraph</p>
<p>a paragraph in string. the date is 11 December 2012</p>
<table border="0" padding="27">
<tr>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
</tr>
</table>
</body>
</html>
关于这个幻想的事情是它重用了相同的旧Java编程语言技术,使用类似于if-else-then
,while
,try-catch
等方式的自定义关键字来表示html标签以非HTML方式可以轻松检查语法正确性,最重要的可以轻松地与常规Java代码混合,而不会在<%
,{{1}的海洋中迷失}},%>
,<%=
等
一个附加功能是字符串可以直接放置为打印到生成的HTML中的命令,这是Java不支持的(在使用之前必须将纯字符串分配给变量)。
PS:我知道您可以使用HTML库使用Java代码构建HTML,但是这些库的问题是,源代码本身没有像上面代码那样可读的HTML表示是的 - 如果你理解我的意思。
答案 0 :(得分:2)
它来自Ruby世界,而不是Java,但请看Haml。
答案 1 :(得分:1)
听起来你基本上要求另一种HTML模板引擎。如果你谷歌那么有很多选择。似乎经常出现的(对于Java)是Apache Velocity。 user guide中的一个示例如下:
<HTML>
<BODY>
Hello $customer.Name!
<table>
#foreach( $mud in $mudsOnSpecial )
#if ( $customer.hasPurchased($mud) )
<tr>
<td>
$flogger.getPromo( $mud )
</td>
</tr>
#end
#end
</table>