- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在开发一个基于 Mojarra 2.2.8 的具有相当大和复杂 View 的企业应用程序。我们最大的 View 生成超过 20.000 个节点的 JSF 组件树。当然我们遇到了性能问题,所以我们开始通过替换 <ui:repeat>
来减小树的大小。与 <c:forEach>
并通过替换 rendered
属性为 <c:if>
此 very informative post by BalusC 中推荐的 block .这些措施大大减少了组件树,并带来了显着的性能改进。
虽然有一项措施没有奏效:我们的 View 在选项卡组中包含多个选项卡。当我们试图通过 <c:if>
删除不可见标签的内容时标签,这些选项卡的组件树仍然存在,并且在性能上没有任何好处。
我们发现,<c:if>
的这种用法之间的唯一区别是和其他几个地方是,这次<c:if>
是复合组件的一部分,其内容通过 <composite:insertChildren/>
注入(inject)标签。将复合组件标签的子标签注入(inject)其定义的过程似乎与 <c:if>
有某种冲突。标签。我们还尝试替换 insertChildren
带有 facet
的标签基于方法,但结果保持不变。
为了演示这一点,这是一个复合组件,它将所有内容包装在 <c:if>
中。标记,始终计算为 false
:
<composite:interface>
</composite:interface>
<composite:implementation>
<c:if test="false">
<composite:insertChildren />
</c:if>
</composite:implementation>
这个组件应该什么都不显示,即使它在一个 View 中与很多子元素一起使用。它确实只显示组件树仍然存在,并且没有性能优势。
不幸的是,这使我们无法开发性能优化的选项卡组复合组件。任何人都可以解释一下,为什么会发生这种情况以及是否有解决方法?
我们使用的是 mojarra 2.2.8、el-api 2.2.5、tomcat 8.0。
最佳答案
技术问题是<c:if>
在此构造中仅阻止包含(和执行)<cc:insertChildren>
标记自己。 <cc:insertChildren>
in turn 实际上负责重定位任何复合组件子组件到复合组件实现中声明的位置,以便它们将被实际呈现。默认情况下,复合组件不渲染任何子组件。声明的子项实际上存储为复合组件的一个方面。
换句话说,<c:if>
实际上并不能阻止那些子组件最终出现在组件树中。它只会阻止 <cc:insertChildren>
从被调用。因此,观察到的行为是按设计工作的。要实现所需的行为,您实际上应该向后移动 <c:if>
给客户。
<your:composite ...>
<c:if test="#{false}">
...
</c:if>
</your:composite>
我知道这是不直观的。实际上,您应该从使用复合组件来编写模板中退一步。他们不太适合那个。你应该使用 <ui:composition>
, <ui:include>
, <ui:decorate>
或为此标记文件。复合组件应该只用于组合组件。
关于jsf-2 - <c :if> Tag does not reduce the component tree in composite components,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45242359/
我们与一位客户存在某种问题,该客户认为我们发送的 XML 文件中的两个版本的空标记之间存在语义差异(纯 XML 没有 HTML ..)。 他们期望: 我们发送: 我
我想计算文本中 pp/np/vp 的数量,但我不知道如何在 openNLP chunker 中识别 PP-tags/NP-tags/VP-tags?我已经尝试过这段代码,但它不起作用。 Chunker
从我正在阅读的代码的上下文来看,它看起来像 $("")创建一个标签,其中 $('')是一个搜索标签的选择器。这里发生了什么?实际上,我可能没有掌握第二个语法,但我确信我已经完成了 $('idName'
我正在使用 Builder::XmlMarkup 创建 xml。我想创建一个没有内容的标签,因为 api 强制我创建它。如果我使用博客 xml.tag do end 我得到了我想要的 但我希望它更短
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Using the XHTML closing slash (/) on normal tags? Are
默认情况下, someXmlWriter.WriteElementString("my-tag", someString); 产生 我环顾四周XmlWriterSettings强制作者生成 的可能选
如何修改tag-it ui插件https://github.com/aehlke/tag-it (版本 v2.0)因此它只允许选择 x 个标签,以及如何仅允许“availableTags-option
我能够解析这样的内容: value 通过: File inputFile = new File("input.xml"); DocumentBuilderFactory dbFactory = Doc
我不太确定如何编写这个查询,它可以在一个查询中完成。案例如下: 我需要选择标签名称列表,并为每个标签获取最近标记的专辑信息。这意味着,如果用户创建名为“Pamela Anderson”的专辑并将该专辑
这个问题在这里已经有了答案: Where should I put tags in HTML markup? (21 个回答) JavaScript at bottom/top of web pa
Django 2 by Example 中的教程,我不明白: step (2): Why is `Count('tags')` **not** counting the total number of
我是 jekyll 的新手,正在构建我的网站。 我有一个“帖子”布局,我希望与帖子相关的所有标签都出现在左栏中。我遇到的问题是,使用 {{ page.tags }} 会返回一个未以逗号分隔且看起来很乱
如何将一个目录下的所有hash tag重写为slash tag? ( Apache ) http://www.domain.com/company/index#about => http://www.
在查询 Flickr API 并检查返回的标签时,我注意到我收到了未在 Web 界面上显示的其他标签。例如对于此图像: http://www.flickr.com/photos/77060598@N0
我有类似 的东西我想得到这个: <1> <2> 但我只想在 中应用它标签而不是其他任何地方。 我已经有了这个: $txt = $this->input->post('
我想删除 xxx yyyy zzz 用 php。但是,首先,我想控制字符串是否以 开头并以 结尾 是否有用于此目的的函数? if(string begins with '' and ends wi
在我的模板中加载自定义标签时出现此错误。我访问了许多关于此的主题,并且确保确认我没有犯一些常见错误: 包含标签的文件在 templatetags 中文件夹。 此 templatetags文件夹包含 _
API doc中没有关于构造函数的文档。我想了解SvgElement.tag()的用途/用例。 最佳答案 SvgElement.tag(String tag)构造函数为对应的SvgElement值创建
$('*').data('tag', "tagged"); $('li[tag=tagged]').length 返回零... 最佳答案 $('*').data('tag', "tagged"); $
下面的代码出错了。我该如何解决这个问题? {% block header %} {% endblock %} 错误输出: TemplateSyntaxError : Invalid bloc
我是一名优秀的程序员,十分优秀!