javascript 无法处理 struts html 标签

javascript not working on struts html tag

我的 Struts2 项目 jsp 页面中有以下代码

<select id="amountSelect">
 <s:iterator value="rateCardDetailsList" status="listStatusAmount">
    <option value="<s:property value='#listStatusAmount.index'/>"><s:property value="rechargeAmount"/></option>
</s:iterator>
</select>

以及相应的脚本

 $(document).ready(function() {
    $("#amountSelect").change(function(){
        var v= $("#amountSelect").val();
        var r= "<s:property value='rateCardDetailsList["+ v +"].mobileRate'/>";
        alert(r);
    });
});

其中 rateCardDetailsList 是包含变量 mobileRate 的特定 bean(Object) 的数组。但是我在 r 的位置得到空值,同时发出警报 (alert(r);)。检查元素如下

 $(document).ready(function() {
        $("#amountSelect").change(function(){
            var v= $("#amountSelect").val();
            var r= "";
            alert(r);
            
        });
    });

而不是变量 v 如果我直接给出索引我得到的值即

 var r= "<s:property value='rateCardDetailsList[1].mobileRate'/>";
    alert(r);

确实在警报中给出了一个值。 可能是什么原因?

这不是 null 而是一个空字符串 ""

这是因为 property 标签没有 return 值。

解析OGNL表达式时抛出异常并在内部捕获。在这种情况下 property 标签 return 什么都没有。

这是疯狂无效JSP + JavaScript:

var r = "<s:property value='rateCardDetailsList["+ v +"].mobileRate'/>";

退后一步,想想所有这些代码在哪里执行。

JSP,例如,自定义标签(此处为 <s:property> 标签)在 服务器 端进行评估,然后再将任何内容发送到浏览器。

JavaScript在客户端端执行,在服务端渲染后发送给客户端。在这里,您试图将服务器端代码(标记)与 JavaScript 代码(字符串连接)混合在一起。甚至不会 关闭 工作。

要让它工作,你需要在 server 端呈现有效的 JavaScript,或者使用 Ajax 并动态获取 JS 值,等等. 渲染JS数据结构很常见(例如JSON),但还有很多其他选择