我一直在寻找能够轻松创建有效 (X)HTML 片段的现代 Java 库。
是的,您可以使用模板语言,但有时您不想这样做,因为与插入您最喜欢的模板语言相比,Java 有一些优势。
我在许多项目中看到了很多内部 HTML 构建器,但我找不到 Commons-HTML Builder。
有人知道吗?
如果它利用 Java 5/6/7 类型系统(泛型)并支持 Fluent Style,那将是理想的选择。 或者类似 fluent 风格的东西,即 JQuery 风格链接,或者用于模拟 JMock 等库的状态机(学究式地说是 Monad)。
一个粗略的构建器示例可能是:
new Html().title("stuff").body().in().div().in().h1("Hello World").hr();
另一个例子: http://codemonkeyism.com/the-best-markup-builder-i-could-build-in-java/
我最终写了自己的:Java Anti-template Language (JATL)
最佳答案
我最终编写了自己的库,名为 Java Anti-template Language (JATL)
关于Java HTML Builder(反模板)库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3583846/
在相当大的Ruby应用程序中,我们会遇到这样一种情况,即给定的对象由一些东西来标识:例如名称和ID。这些值类型中的每一个都有不同的用途,因此并不完全等同(id和name存在于不同的地方)。因此,我们最终在应用程序周围传递了各种值(ID、名称和对象)。这种情况至少在某种程度上似乎是个问题,因为我们已经被错误所困扰,这些错误涉及不清楚应该将什么类型传递给给定函数。事实上,我记得多年来在许多应用程序中看到过类似的问题代码,尽管我再也没有给它一个具体的名称。作为一种无类型语言,Ruby不允许像C++那样使用经典的基于类型的多态函数。作为解决方法,一位同事经常使用这种代码:definitiali
关闭。这个问题是opinion-based.它目前不接受答案。想改善这个问题吗?更新问题,以便可以通过editingthispost用事实和引文回答问题.7年前关闭。ImprovethisquestionSteveKlabnik最近在pullrequest中说对于实用程序模块:[Thecode]obscuresthefactthattheseareclassmethods,andwewanttousethemthatway.Plus,Ithinkthatextendselfisgenerallyananti-pattern,andshouldn'treallybeusedexcepti
我尝试使用PromiseAPI编写代码以超时重新连接到数据库。我最终所做的是将连接到数据库的promise包装在一个promise中,但我不确定这是否是最好的做事方式。我认为可能有一种方法可以使用尝试连接到数据库的原始promise,但我无法弄清楚。functionconnect(resolve){console.log('Connectingtodb...');MongoClient.connect(url,{promiseLibrary:Promise}).then((db)=>resolve(db)).catch((err)=>{console.log('dbconnection
这个问题在这里已经有了答案:WhatistheexplicitpromiseconstructionantipatternandhowdoIavoidit?(3个答案)关闭7年前。我有一些看起来像这样的代码:functionfoo(){vardeferred;deferred=q.defer();doSomethingAsync().then(function(result){varresultTransformed=doSomethingSynchronousToTheResult(result);deferred.resolve(resultTransformed);});retu
我在StackOverflow上看到了人们建议为AngularJS服务提供回调函数的答案。app.controller('tokenCtrl',function($scope,tokenService){tokenService.getTokens(functioncallbackFn(tokens){$scope.tokens=tokens;});});app.factory('tokenService',function($http){vargetTokens=function(callbackFn){$http.get('/api/tokens').then(functionon
我正在使用TypeScript在Angular2中开发一个项目,并试图确定我的工作流程。昨天,我看到了thisvideo来自GuyBedford关于包管理的内容。在其中,他提到了他认为捆绑是反模式的事实。我看到过类似的关于不再在angular-universityguide上进行捆绑的提及。.从观看视频后我读到的内容来看,在我看来,捆绑是反模式的原因是HTTP2allowsmultipleresponsesperrequest,并行发送。这似乎非常有用,因为对服务器的单个请求可以在单个文件中返回整个Angular应用程序。HTTP2支持现在是否普遍到足以过渡到非捆绑应用程序?有什么优点
我第一次在jQuery应用程序中使用Redux,并且我创建了小型可观察实现。可观察对象响应状态对象的多个属性的变化,当状态本身发生变化时对DOM进行更改。如果我的可观察回调需要2个属性值来完成其任务,我将观察这两个值,然后使用这些值来更新UI。可观察对象根本不触及状态。他们只是将它呈现给回调中的可观察对象,以便它可用于使用状态更新UI。我正在进行的项目是一个重构,所以我在事后添加了Redux。有时,我意识到我需要一段代码中的特定状态属性,但我可能没有时间将其正确重构为可观察对象。在这些情况下,我会在商店中调用getState以获取我需要的内容并继续使用它。我不禁觉得这种方法有点缺陷。在
我经常看到这种模式来定义javascript对象functionPerson(name){this.name=name;}Person.prototype.describe=function(){return"Personcalled"+this.name;};并且在thisarticle它说直接向原型(prototype)对象添加属性被认为是一种反模式。来自“基于经典类”的语言,必须定义方法之外的属性听起来不太正确,而且在javascript中,方法应该只是一个具有函数值的属性(我在这里吗?)我想知道是否有人可以解释这一点,或者甚至建议一种更好的方法来处理这些情况
我正在编写一个复杂的React应用程序并使用Cortex作为我的中心模型。cortex的理念是它包装您的数据并在更改数据时从根调用完整的重新渲染。这非常有用,尤其是当您有非分层View更改状态并影响其他View时。我面临的问题是在重新渲染时维护状态/Prop。例如,我有一个特定的层次结构,如下所示:EditorCard需要Editor的JavaScript实例为了更改Editor单击PublishButton(我在Editor中使用了一个外部库,它公开了编辑方法)。因此Editor在ComponentDidMount将实例设置为prop在EditorCard上通过调用传递给它的函数。我
如果我错了请纠正我,但我对API的理解是它允许我通过接口(interface)修改和请求数据,这正是我想在Go中做的事情。例如我有一个用户界面:interfaceIUser{GetId()intGetName()stringGetSignupDate()timeGetPermissions()[]IPermissionDelete()}这在我看来已经像事件记录了,如果我想用新ID创建一个新用户,我将不得不使用new因为据我所知Go不支持静态函数.这意味着我的界面中还需要一个提交功能,这对我来说更糟。我在这里做错了什么? 最佳答案 在