gpt4 book ai didi

javascript - 如何使用 Struts 中的属性名称通过 JavaScript 动态创建 HTML?

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

这是我的问题:

我在 JSP 中有一个 JavaScript 函数,如下所示:

<script type="text/javascript">
function generateTable()
{

var temp = '';
temp = temp + '<logic:iterate name="dataList" id="dto" indexId="dtoIndex" >';
temp = temp + '<logic:equal name="dtoIndex" value="0">';
temp = temp + '<thead>';
temp = temp + '<tr class="topexpression7"></tr></thead><tbody></logic:equal>';
temp = temp + '<tr>';

var propertyArray = new Array('"title"','"jDate"','"employeeId"','"employeeName"');
var arrayLength = propertyArray.length;

var html = '';
var i=0;
for (i=0; i<arrayLength; i++)
{
if (i == 2)
{
// left
html = html + '<logic:present name="dto" property=' + propertyArray[i] + '><td class="left">&nbsp;<bean:write name="dto" property=' + propertyArray[i] + '/></td></logic:present>';
}
else if (i == 3)
{
// Only applies to this property
html = html + '<logic:present name="dto" property="employeeName">';
html = html + '<td class="left" style="white-space:nowrap;">&nbsp;';
html = html + '<nobr><bean:write name="dto" property="employeeName"/>';
html = html + '</nobr></td></logic:present>';
}
else
{
// center
html = html + '<logic:present name="dto" property=' + propertyArray[i] + '><td class="center">&nbsp;<bean:write name="dto" property=' + propertyArray[i] + '/></td></logic:present>';
}
}
temp = temp + html + '</logic:iterate></tbody>';

// Write out the HTML
document.writeln(temp);
}
</script>

如果我对属性进行硬编码,如 where ( i == 3 ),它就可以正常工作。按预期呈现。

但是通过尝试动态解析字符串(其中 i <> 3 ),字符串 var "html"null每次。不可否认,我的 JavaScript 充其量只是一般水平。我确信这是一个简单的修复,但如果我能弄清楚的话那就太糟糕了!

附注至于我为什么要走这条路,说来话长,我就不再讲这个故事了(不客气)。我只是想知道为什么变量 propertyArray[i]不工作。

最佳答案

JSP 在服务器上呈现,JavaScript 在客户端浏览器上呈现,但为了正确呈现,JSP 标记应该格式良好,即具有具有有效值的所有必要属性、开始和结束标记等。但不是所有标记是有效的。首先,您的 JSP 在服务器上编译,它无法处理错误的 JSP 标记。当 i != 3 时,您的 JSP 标记就很糟糕。当 JSP 被编译时,JavaScript 代码就像内容一样使用,它对于 JSP 编译器来说意义不大,因为它正在查找与 JSP 语法相对应的标签。从 JSP 编译器的 Angular 来看,您将看到 logic:present 标记具有属性 property 但没有值,因为 propertyArray[i] 不作为 JSP 表达式进行计算,它只是打破了标记边界。所以标签没有正确编译。如果将 JSP 标记放入 JavaScript 代码中,请确保它们是一致的。

关于javascript - 如何使用 Struts 中的属性名称通过 JavaScript 动态创建 HTML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18210638/

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