JSTL请求性能



我在一个列表中有一些对象是组件,我实现了这个来显示它们:

first.xhtml:

<h:form id="sceneForm">
   <c:forEach items="#{templateController.model.selectedTemplate.templatesSet.toArray()}" var="templateControls" varStatus="ind">
        <ui:include src="second.xhtml"/>
    </c:forEach>
</h:form>

second.xhtml:

<c:forEach items="#{templateControls.controlAttributes.toArray()}" var="controlAttributes" >
    <c:choose>
        <c:when test="#{controlAttributes.controlAttributeType.name == 'top'}">
            <ui:param name="top" value="#{controlAttributes.value}px"  />
        </c:when>
        <c:when test="#{controlAttributes.controlAttributeType.name == 'left'}">
            <ui:param name="left" value="#{controlAttributes.value}px"  />
        </c:when>
        <c:when test="#{controlAttributes.controlAttributeType.name == 'width'}">
            <ui:param name="width" value="#{controlAttributes.value}px"  />
        </c:when>
        <c:when test="#{controlAttributes.controlAttributeType.name == 'height'}">
            <ui:param name="height" value="#{controlAttributes.value}"  />
        </c:when>
    </c:choose>
</c:forEach>
<c:if test="#{templateControls.controlType.type == 'Button'}">
    <div style="top:#{top}; left:#{left}; width:#{width}; height:#{height}px;>
        <div class="gui-component-inner">
            <span>#{value}</span>
            <em class="helper"></em>
        </div>
    </div>
</c:if>

我遍历我的属性列表,并设置了一些变量,之后我用变量设置了我的组件。这工作很好,但它不是最优的。我做了一个按钮:

<p:commandButton value="Test" actionListener="#{templateController.testAction}" onstart="Utils.PrintTime()" oncomplete="Utils.PrintTime()"/>

Witch打印请求开始和请求结束时的时间,如果我删除整个<c:forEach>,则需要0.02秒。我怎样才能通过迭代获得更好的请求时间?任何想法?

为什么我得到这个减去我不知道…

这也是我的解决方案:

我创建了一个具有top,left,width,height的对象,并在TemplateControl对象中声明了它。在页面加载时,我迭代templatecontrol。我为每个组件设置了top,left,width,height。在xhtml中,我只写:

<c:if test="#{templateControls.controlType.type == 'Button'}">
    <div style="top:#{templateControls.atr.top}; left:#{templateControls.atr.left}; width:#{templateControls.atr.width}; height:#{templateControls.atr.height}px;>
        <div class="gui-component-inner">
            <span>#{value}</span>
            <em class="helper"></em>
        </div>
    </div>
</c:if>

像这样,我在java中迭代开始,而不是在xhtml中,我从<c:forEach><c:if>标签中解脱出来,现在我的请求非常快。

相关内容

  • 没有找到相关文章

最新更新