我对Freemarker和Restlet的freemarker扩展文档中的内容感到有点困惑.
情况就是这样:restlet引擎提供资源的HTML表示(例如www.mysite.com/{user}/updates).为此URI返回的资源是一个HTML页面,其中包含使用freemarker模板创建的所有更新.此应用程序托管在Glassfish v3服务器上
问题(S):
freemarker配置只应按照freemarker文档加载一次:
/* You should do this ONLY ONCE in the whole application life-cycle:Create and adjust the configuration */
Configuration cfg = new Configuration();
cfg.setDirectoryForTemplateLoading(
new File("/where/you/store/templates"));
cfg.setObjectWrapper(new DefaultObjectWrapper());
Run Code Online (Sandbox Code Playgroud)
在Java EE应用程序中执行此操作的最佳位置是什么?我想在web.xml中使用它作为context-param并使用ServletContextListener - 但我不知道如何去做.
根据freemarker的文档,我们还可以添加freemarkerservlet并映射.ftl url-patterns.但是这已经由Restlet servlet映射(即,"/ " 的url模式).所以为*.ftl另外一个没有意义(或者是吗?)
所以问题基本上是关于如何最好地与Freemarker的"配置"集成,以便它只发生一次,这段代码的"入口点"是什么(谁称之为).有没有人在Java EE环境中成功使用Freemarker + restlet?有任何想法吗?
谢谢!
我有以下页面结构:
<ul class="listOfPosts">
<li class="post WCPost" data-postId="1">
<div class="checkbox"><input type="checkbox" class="wcCheckbox"/></div>
<div class="PostContainer>
<!-- some other layout/content here -->
<ul class="listOfLabels">
<li class="label"> Label 1</li>
<li class="label"> Label 2</li>
</ul>
</div>
</li>
<li class="post WCPost" data-postId="2">...</li>
<li class="post WCPost" data-postId="3">...</li>
<li class="post WCPost" data-postId="4">...</li>
...
</ul>
Run Code Online (Sandbox Code Playgroud)
这是过于简单化的视图:
var MyView = Backbone.View.extend({
el:$('.listOfPosts'),
initialize: function() {
_.bindAll(this,"postClicked");
},
events: {
"click .wcCheckbox":"postClicked"
},
postClicked: function() {
alert("Got a a click in the backbone!");
}
});
Run Code Online (Sandbox Code Playgroud)
问题:我想知道被点击的帖子的数据ID.使用简单的JQuery,我可以执行以下操作:
$('.wcCheckbox').live('click' function() {
alert("Data id …Run Code Online (Sandbox Code Playgroud) 我有一个案例,我需要根据特定操作(分类)是否正在进行切换元素的可见性,如果是,它是隐藏的,否则它是可见的.
现在我的css看起来像这样:
.isCategorizing .category.all {
display:none;
}
Run Code Online (Sandbox Code Playgroud)
也就是说,它意味着.category.all如果父级有类,则应该隐藏带有类的div.isCategorizing
现在在jquery中,如果我切换.category.all元素的可见性,则在HTML中添加内联样式优先于.css文件中的CSS !! 因此,即使上述情况属实,内联样式的可见性值似乎也优先,并且元素不会被隐藏.在可见的jquery添加style=display:list-item;到div而我的CSS应该隐藏...
我可以在纯jQuery中处理这个问题但是有太多的状态和检查以确保它应该以特定的方式工作以及维护布尔标志以"记住"该状态是否存在以及是否恢复到该状态.CSS方法更简单,更清晰,但内联样式是令人烦恼的...
......如何最好地处理这个问题?我尝试创建另一个类.hide并使用jquery切换它.似乎工作,但由于某种原因搞砸了我的元素的定位.我正在玩它,但似乎无法找到解决这个问题的干净方案.任何建议?
更新:
这是相应的CSS:
.category{
position:relative;
padding:1px;
margin:2px 0 5px 0;
clear:both;
font-family:arial, sans-serif;
font-size: 14px;
display:inline-block;
width:inherit;
}
.category.all {
display:none;
width:200px;
text-align: center;
padding:3px;
border:2px solid transparent;
border-radius: 4px;
background-color: #DDDFE3;
}
Run Code Online (Sandbox Code Playgroud)
注意:在这种情况下,一个简单的toggleClass不起作用 - 切换"all"将导致按钮可见,即使它不应该是.其次,我从.category类中继承了一些道具,因为这个按钮显示在"类别列表"的末尾,可以这么说,并希望防止重复.
如果我使用toggleClass并且只是重复它可能有效的道具,那么第二个想法... lemme试试这个并发布更新
我正在尝试实现类似Trello的功能,用于将项目从一个列表(阶段)拖动到另一个列表.当列表/阶段太多时,我希望屏幕在从最左边的列表拖动到最右边的列表时自动滚动,这可能是"屏幕外".
目前,我有两个可滚动的可排序级别(参见jsFiddle);
第一级水平滚动,第二级垂直滚动.也就是说,我可以水平移动列表,只垂直移动列表中的每个元素.
在第二级,我有:
$('.phase-block').sortable({
scroll: true,
connectWith: '.phase-block',
appendTo: '.phase-scroll',
helper: 'clone'
});
Run Code Online (Sandbox Code Playgroud)
它将帮助器放在容器中,并允许我拖动到最右侧的列表,但不允许在列表中进行垂直滚动.
有没有办法保持两种可滚动性而不牺牲另一种?
jquery drag-and-drop jquery-ui jquery-ui-sortable jquery-ui-draggable
在我们的代码中,我们创建了许多“ finagle管道”,如下所示:
val f1 = new Filter[A,B,C,D](...)
val f2 = new SimpleFilter[C,D](...)
val f3 = new Filter[C,D,E,F](...)
val s = new Service[E,F](...)
val pipeline: Service[A,B] = f1 andThen f2 andThen f3 andThen s
Run Code Online (Sandbox Code Playgroud)
我现在希望能够在这样的链中的任何地方 “插入”记录器。记录器只会记录请求进入并收到响应的事实。像这样:
class LoggerFilter[Req, Resp](customLog: String) extends SimpleFilter[Req, Resp] with LazyLogging{
override def apply(request: Req, service: Service[Req, Resp]): Future[Resp] = {
logger.info(s"$customLog => Request: ${request.getClass.getName} -> ${service.toString}")
service(request).map{resp =>
logger.info(s"$customLog => Response: ${resp.getClass.getName} -> ${request.getClass.getName}")
resp
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用这种方法,我们必须不断声明多个记录器,以便类型可以正确对齐,然后在“正确的位置”插入。
val logger1 = new LoggerFilter[A,B]("A->B Logger") …Run Code Online (Sandbox Code Playgroud) 我一直在工作中使用 Scala,为了更深入地理解函数式编程,我选择了 Graham Hutton's Programming in Haskell(喜欢它:)
在关于 Monads 的章节中,我第一次看到了 Applicative Functors (AFs) 的概念
在我(有限的)专业 Scala 能力中,我从来不必使用 AF,并且总是编写使用 Monad 的代码。我试图提炼对“何时使用 AFs”的理解以及由此产生的问题。这种见解是否正确:
如果您的所有计算都是独立且可并行的(即,一个的结果不能确定另一个的输出),如果输出需要通过管道传输到没有影响的纯函数,AF 会更好地满足您的需求。但是,如果你有一个甚至单一依赖的AF不会帮助,你会被强制使用单子。如果需要将输出通过管道传输到具有效果的函数(例如,返回 Maybe),您将需要 Monads。
例如,如果你有这样的“monadic”代码:
val result = for {
x <- callServiceX(...)
y <- callServiceY(...) //not dependent on X
} yield f(x,y)
Run Code Online (Sandbox Code Playgroud)
最好做一些类似的事情(scala 的伪 AF 语法,|@|就像并行/异步调用之间的分隔符)。
val result = (callServiceX(...) |@| callServiceY(...)).f(_,_)
Run Code Online (Sandbox Code Playgroud)
f == pure and callService* are independentAF 可以更好地为您服务f有效果,即,f(x,y): Option[Response]您将需要 MonadscallServiceX(...), y …我在 Python 代码库中使用了相当多的namedtuples,它们散落在.py文件中。将所有这些声明提取到单独的文件中是一个好习惯还是应该将它们保留在使用的地方?
在某些情况下,其他模块需要namedtuples在单独的模块中使用引用,因为这就是接口的定义方式 - 他们期望如此namedtuples。组织各种namedtuples特别是跨模块引用的推荐的 Pythonic 方式是什么?
我正在尝试在我的组织中采用BDD,因为C#.Net是我们的主要开发模式,Specflow是我们对"任何黄瓜"的最佳选择.
但是,我过去曾是一名Spring爱好者,但在我的公司,我们正在将Autofac用于应用程序的各个部分.但是,我找不到任何解释"如何"的资源,可以使用Autofac"触发"Specflow的BDD测试并提供必要的依赖连接.
我计划让Autofac负责实例化,连接和执行所有内容而不是执行Specflow,并且让调用Autofac的方法遍布各处,即使用Autofac作为服务定位器而不是DI/IoC容器.甚至可以这样做,还是我以错误的方式看待它并且有更好的方法来实现同样的目标?或者我应该完全依赖Specflow的"内部容器"进行DI并完全忘记Autofac?
可能的方法:
优点缺点:
我不确定如何实现它们中的任何一个,如果最好让Specflow处理DI并忘记Autofac或让Autofac解雇所有内容或者是否存在中间地带?
当前的BDD设置:Specflow,Selenium/PhantomJS,Xunit.希望与Autofac结合使用.
Here's what I intend - let's say I have a field called medical_payments - it can "either" be a limit if one elects or waived
{
"medical_payments":
{
"limit_value":"one_hundred"
}
}
Run Code Online (Sandbox Code Playgroud)
如果被选为豁免,则应为:
{
"medical_payments":
{
"waived":true
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,这是我所拥有的:
sealed trait LimitOrWaiver
case class Limit(limit_key: String) extends LimitOrWaiver
case class Waived(waived: Boolean) extends LimitOrWaiver
case class Selection(medical_payments: LimitOrWaiver)
Run Code Online (Sandbox Code Playgroud)
样本数据:
Selection(medical_payments = Limit("one_hundred")).asJson
Run Code Online (Sandbox Code Playgroud)
输出:
{
"medical_payments":
{
"Limit": { "limit_value":"one_hundred" } // additional object added
}
}
Run Code Online (Sandbox Code Playgroud)
同样为Json添加了Selection(medical_payments = Waived(true)).asJson …
据我了解,如果您有许多该类型的函数,f: a -> m[b]并且只要它们都返回包含在其中的值,m您应该能够通过do/bind/flatMap以下方式将它们链接起来:
f: A -> M[B]
g: B -> M[C]
h: C -> M[D]
Run Code Online (Sandbox Code Playgroud)
通过>>=or flatMap(Scala)链接起来相当简单。
如何组合在 monad“盒子”中不同但里面的值是“可链接的”的函数?
f: A -> M[B]
g: B -> N[C]
h: C -> P[D]
Run Code Online (Sandbox Code Playgroud)
我从未见过/读过这种情况,我知道我们可以使用liftmonad,但这会破坏 IMO 的目的。这是 monadic 结构的限制吗?我们甚至可以链接它们吗?解决这个问题的规范方法是什么?
scala ×4
jquery ×3
haskell ×2
monads ×2
applicative ×1
autofac ×1
backbone.js ×1
c# ×1
circe ×1
css ×1
finagle ×1
freemarker ×1
java-ee ×1
javascript ×1
jquery-ui ×1
namedtuple ×1
python ×1
python-2.7 ×1
restlet ×1
restlet-2.0 ×1
servlets ×1
show-hide ×1
specflow ×1