2011-03-22 274 views
1

一个快速的问题,这是更好的性能和内存明智的:性能使用JSF的outputText渲染HTML

<t:outputText escape="false" value='<tr><td>'/> 

,或只是一个直

<tr><td> 

我问,因为我还没有发现任何有关哪些是最佳性能方面的文档以及JSF的一般可维护性。我相信后者会产生更易维护的代码(您可以更容易地识别不匹配的标签),但我不知道是否有某些人希望使用outputText显式输出html元素。

回答

0

只需将HTML直接放入视图即可。不仅组件确实需要额外的内存/资源开销,而且还希望尽量减少这些开销,但它也可以提高可读性。

当您使用Facelets而不是JSP作为视图技术时,您发布的示例也将无法解析。

+0

我实际上收到了这个来自我公司一个不存在的组的代码。我只是不知道是否有任何性能影响会导致团队以这种方式开发它。 – jhutton 2011-03-23 20:58:13

+0

在古老的JSF 1.0和1.1中,不可能直接在JSF页面中嵌入HTML。这可能是相关的,但仍然是,正确的方法是使用''。另请参阅http://stackoverflow.com/questions/3623911/what-are-the-main-disadvantages-of-java-server-faces-2-0,以获取有关JSF特定怪异历史的良好开端。 – BalusC 2011-03-23 20:59:24

0

恐怕第一个例子不会在所有的工作:

  1. outputText通常为<跨度产生>标签里面的文字,所以它不会做你想做的编辑:看评论
  2. 有可能会逃脱<>字符,这样就不会创建HTML标签trtd可言,只是文本:&lt;tr&gt;&lt;td&gt;(见escape attribute

第二个一般不是一个好主意,因为标签是为了输出文本的页面,而不是HTML标签。

+0

声明1本身并不正确。只有当HTML中必须有属性时才会这样做,例如, 'id','styleClass'等 – BalusC 2011-03-22 21:19:38

+0

正确,我的错误 – 2011-03-22 21:22:35