使用纯JSP编写HTML,通过将HTML编写为类似Java的代码

5

回答前请仔细阅读。这是我构思的一种虚幻编程技术。我想知道现实生活中是否有类似的东西。

以下是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-thenwhiletry-catch等定制关键字以非html方式表示html标签,从而易于进行语法正确性检查,并且最重要的是可以轻松地与常规Java代码混合在一起,而不会在<%%><%=out.write()等海洋中迷失。
另一个添加的特性是,字符串可以直接作为命令放置到生成的HTML中打印出来,这是Java不支持的(在使用之前必须将纯字符串分配给变量)。
  • 在现实生活中有类似的东西吗?
  • 如果没有,是否有可能在Java或JSP中定义自定义关键字?
  • 还是我必须为此创建全新的编程语言?
  • 你认为这种设置存在哪些问题?

附注:我知道您可以使用HTML库使用Java代码构造HTML,但是这些库的问题在于,源代码本身没有可读的HTML表示形式,就像上面的代码一样 - 如果您明白我的意思。


4
恭喜,你多多少少重新发明了PHP。 - Thorn G
请查看 - http://www.playframework.org/modules/rythm - KV Prajapati
1
好的,现在你的问题没有意义了。你说你不想混合代码和HTML,但这正是你的例子所展示的。你说你想要一种更清晰的创建HTML的方式,但你的例子和你描述的一样凌乱。通过编辑DOM来创建文档的纯粹方式对你来说太冗长了。请澄清一下。 - Brad
@Brad,也许你可以给我展示一下如何“通过编辑DOM创建文档”,因为我认为我们只是有些误解。请以回答的形式发布。 - ADTC
你没有提供任何样例,只有一个链接。而我尝试的似乎不是你所指的。这就是为什么我要求一个样例代码块,以便我们可以消除误解。 - ADTC
显示剩余2条评论
2个回答

2

虽然不是Java,但可以看一下Ruby世界的Haml


哇,太棒了.... :) 如果您能在答案中加入主页上的示例或更多内容,那就太好了 :) - ADTC
我相信有一个HAML的Java实现 - Richard JP Le Guen

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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接