在jstl标记中包含标记会被认为是不好的形式吗?因此,例如,我知道下面的方法可以工作,但是在jsp的jstl标记中包含script标记会不会被认为是不好的形式呢?
<c:choose>
<c:when test="${!empty bean.value}">
<p>Its not empty</p>
</c:when>
<c:otherwise>
**<script>
callJSSomeFunction();
</script>**
</c:otherwise>
</c:choose>发布于 2009-07-09 00:00:45
我不知道什么是糟糕的形式(有点苛刻),但您可能会认为,对于查看未启用JS的页面的人来说,您的<c:otherwise>实际上将不会输出任何内容,这并不是很优雅。
此外,如果页面是增量呈现的,您的函数调用可能会在输出时执行,并且在DOM被浏览器完全加载之前执行,因此行为不可预测(或者根本就不能工作--我已经遇到过这种情况)。
我会考虑将所有函数调用放在头部,并使用众多检测DOM何时加载的技巧之一(jQuery's $(document).ready() for example)来实施更整洁的分隔,从而使您的工作变得更容易。
发布于 2009-07-08 22:46:41
我不这么认为-这是你在JSTL中有条件地做事情的方式,我认为你不应该仅仅为了有一个脚本标记就有一个脚本标记。
发布于 2012-12-12 11:47:31
我现在正在处理一些大型的JSTL terds,所以我想我应该加入一些UI开发的观点。
SGM-like语法包装了SGM-like语法的另一个域,这是很糟糕的形式,但这不是您的错。但是,您可以通过将它们分开来帮助使其更好。这并不总是可行的,但越多地设置vars并仅在必要时将它们放入HTML中,效果就越好。
另一个问题是,你试图用服务器端代码直接触发客户端脚本,考虑到我五年来处理UI代码的经验,我会说是的,对于你的UI人员来说,突然遇到触发器是一件很大的事情,他们真的不知道如何追根溯源,也无法控制。见鬼,触发器,即使是Java开发人员也不一定知道如果事情足够丑陋,如何追随到起源。
想象一下身处我们的境地。采用服务驱动的体系结构,但让我们将Java字符串添加到参数组合中,这样我们就可以从客户端实际建立对象方法调用。这是个好主意吗?不,这是个可怕的想法。这并不是因为你不想让JavaScript开发人员写JavaScript(你不想--这真的让我们很不愉快),而是因为在这两个分割点上,事情应该尽可能简单。我给你发数据,你可以随心所欲地处理。
所以只要把数据给我们就行了。理想情况下是JSON形式的,但我们将忍受任何东西,以防止JS执行由服务器决定。你最不想看到的就是在你充满OOP-murdering bean的地方出现大量的UI马蹄,所以不要强迫我们去寻找那些在HTTP墙两边的点之间被绑得很紧的东西,这对我来说没有任何意义。我们把消息包在石头上,然后把它们扔到墙上,这听起来很不雅观,但在我的经验中,没有一种“瘦客户端”解决方案能减少痛苦。
相信你“讨厌”的直觉。有时他们是错的,但你应该在早上淋浴时弄清楚这一点,因为他们通常是对的。
https://stackoverflow.com/questions/1100931
复制相似问题