gpt4 book ai didi

javascript - 如果 struts/自定义标签位于 javascript 方法内,它们何时得到解析

转载 作者:行者123 更新时间:2023-11-28 18:36:31 26 4
gpt4 key购买 nike

我遇到了一个非常奇怪的问题。我有一个 jsp 页面,其中有一个 javascript 方法。这个方法包含了很多Struts和自定义标签。此方法迭代几个列表,然后动态创建行和列并将它们添加到表中。
此方法还在新添加的行和列上创建了一些指向其他 javascript 方法的链接。

现在的问题是,在文档准备好时调用此方法,需要花费大量时间,并且页面需要几分钟才能完全呈现。奇怪的是,即使我不调用这个方法,页面也会花费很多时间。但如果我在删除其中的代码后调用它,那么页面渲染速度会非常快。

所以我无法理解这些标签何时从服务器页面加载中解析或在服务器发送响应之前解析?

为什么即使我不调用此方法,此方法也会使我的页面变慢?

解决这个问题的标准方法是什么?

添加示例代码进行检查:

<s:set var="indexCount" value="0" />
<logic:iterator value="#someParentList" var="company" status="statusL">

<logic:iterator value="#childLIst" var="employee" status="statusB" >
empBalHtml += '<tr>';
empBalHtml += ' <td class="flag" rowspan="2" >';
empBalHtml += getString(function(){/*!<s:checkbox name="enrolActivity.schBalempAllocationSave[%{#indexCount}].chk" />*/});
empBalHtml += getString(function(){/*!<s:textfield value="%{#employee.billDate}" fieldId="emp_ALLOCATION_SECTION" format="date" calendar="false" style="display:none" name="enrolActivity.schBalempAllocationSave[%{#indexCount}].schBalempTotalAppliedBillDate" />*/});
empBalHtml += ' <s:hidden name="enrolActivity.schBalempAllocationSave[%{#indexCount}].empIdKey" value="%{#employee.empIdKey}" ></s:hidden>';
empBalHtml += ' <s:hidden name="enrolActivity.schBalempAllocationSave[%{#indexCount}].primarySecondary" value="%{#employee.pmtStream}" ></s:hidden>';
empBalHtml += ' <s:hidden name="enrolActivity.schBalempAllocationSave[%{#indexCount}].employeeId" value="%{#employee.employeeId}" ></s:hidden>';
empBalHtml += ' <s:hidden name="enrolActivity.schBalempAllocationSave[%{#indexCount}].position" value="%{#indexCount + 1}" ></s:hidden>';
empBalHtml += ' </td>';
empBalHtml += ' <td rowspan="2" nowrap="nowrap">';
empBalHtml += ' <s:a id="empId-%{#statusB.index}" fieldId="emp_ALLOCATION_SECTION" href="javascript:$.nav.urlForward(CTX_ROOT + \"/empDetails_load.do?empIDKey=%{#company.empIdKey}\")">${company.emp.empId}</s:a>';
empBalHtml += ' <s:if test="enrolActivityFlags.secondaryPresent" >&nbsp;(<s:label name="enrolActivity.empBalances[%{#indexCount}].pmtStream" value="%{#employee.pmtStream}" fieldId="emp_ALLOCATION_SECTION"/>) </s:if>';
empBalHtml += ' </td>';

empBalHtml += ' <td class="numeric">';
empBalHtml += getString(function(){/*!<s:label value="0" format="currency" currencyCode="${enrolActivity.currency}" fieldId="emp_ALLOCATION_SECTION"/>*/});
empBalHtml += ' </td>';
empBalHtml += '</tr>';

<s:set name="indexCount" value="%{#indexCount + 1}"/>
</logic:iterator>

</logic:iterator>

$("#someRow").after(empBalHtml);

最佳答案

JSP 和(自定义)struts 标签在服务器端呈现,Javascript 在大多数 struts 环境中总是在客户端(浏览器)。因此,您的浏览器可能很慢,因为您在服务器端生成了大量的 javascript 代码,而浏览器必须运行这些代码。如果您始终准备好文档来调用此方法,则每次浏览器访问该页面时它将运行。或者传输时间的影响可能太大了。

示例:以下 JSP 和浏览器的 HTML 结果:

...
<script>
var myvar = "<s:text name='foo.bar'/>";
</script>
...

浏览器的结果,浏览器中的 javascript 引擎必须运行:

...
<script>
var myvar = "My Foo Bar translation";
</script>
...

以 Firefox 为例,其中有“检查器”(右键单击页面)并查找脚本选项卡或检查 DOM。

关于javascript - 如果 struts/自定义标签位于 javascript 方法内,它们何时得到解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36975675/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com