首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java中更好的Html生成器

java中更好的Html生成器
EN

Stack Overflow用户
提问于 2012-03-28 22:38:26
回答 7查看 30.1K关注 0票数 5

我想得到低于输出的结果。

代码语言:javascript
复制
<html>
<head>
</head>
<body>
<table>
<tbody>
<thead>
Blah Blah table Header--Constant Part
</thead>
<tr>
some text-constant part
</tr>
<!---Main Customization Part-->
for(i=0;i<some value;i++)
{
<tr>
    for(j=0;j<another value;j++)
    {
        if(some condition)
        {
            <td class=another varibale>some text</td>
        }
        else
        {
            <td class=yet another varibale>some text</td>
        }
    }
</tr>
}
</body>
</html>

正如您所看到的,它是html的混合体,它将从java逻辑中生成其余的内容。现在我的问题来了--我怎样才能在独立的java(也就是不是jsp)中实现.I呢?我知道我可以把它写成一个普通的file.But,不知何故,我觉得这是一个丑陋的solution.Is,有没有更好的方法来完成它?基本上,我正在寻找一个好的java HTML构建器。已经检查过了-Freemarker。此外,我对任何语言的实现都持开放态度,因为java是我最喜欢的语言,所以我更喜欢它。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-03-28 23:42:12

Gagawa“允许开发人员在web或非web应用程序中轻松、动态地构建格式良好的超文本标记语言”。

它只需要使用一个jar,源代码可以免费阅读。

举个例子。

代码语言:javascript
复制
Div div = new Div();
div.setId("mydiv").setCSSClass("myclass");

A link = new A();
link.setHref("http://www.example.com").setTarget("_blank");

div.appendChild( link );

Img image = new Img( "some alt", "some-image.png" );
image.setCSSClass( "frame" ).setId( "myimageid" );
link.appendChild( image );

System.out.print( div.write() );

这将生成以下HTML:

代码语言:javascript
复制
<div id="mydiv" class="myclass">
  <a href="http://www.example.com" target="_blank">
   <img alt="some alt" src="some-image.png" class="frame" id="myimageid">
  </a>
</div>
票数 18
EN

Stack Overflow用户

发布于 2012-03-28 22:45:24

如果你想坚持使用纯java,你可以使用模板。

例如:

代码语言:javascript
复制
... constant html ...
</tr>
{variablePart}
</tr>
... constant html ...

将其保存在某个地方(例如,在.properties文件中),并将其加载到应用程序的String中。那就让你的常规建筑规范。

代码语言:javascript
复制
StringBuilder builder = new StringBuilder();
for(j=0;j<another value;j++)
{
    if(some condition)
    {
        builder.append("<td class=another varibale>some text</td>");
    }
    else
    {
        builder.append("<td class=yet another varibale>some text</td>");
    }
}

最后得到你的HTML:

代码语言:javascript
复制
String finalHTML = templateHTML.replace("{variablePart}", builder.toString());

它可能不是完美的,但它比你所拥有的要好一点。

票数 7
EN

Stack Overflow用户

发布于 2012-03-28 22:43:41

你可以考虑使用apache的velocity模板。在Web或应用程序服务器中运行不需要速度

How Velocity Works

User guide

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9909801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档