javascript无法处理struts html标记

时间:2015-04-01 13:10:01

标签: javascript jquery html jsp struts2

我在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)的数组。但我在&#39; r&#39;警报(警报(r);)。在检查元素时,它如下

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

        });
    });

而不是变量&#39; v&#39;如果我直接给索引我得到的值,即

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

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

2 个答案:

答案 0 :(得分:1)

这是疯狂无效的JSP + JavaScript:

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

退一步思考所有这些代码的执行位置。

在将任何内容发送到浏览器之前,在服务器侧评估JSP,例如自定义标记(此处为<s:property>标记)。

JavaScript在服务器上呈现并发送到客户端后,在客户端端执行。在这里,您尝试将服务器端代码(标记)与JavaScript代码(字符串连接)混合使用。甚至不会关闭来工作。

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

答案 1 :(得分:0)

它不是null,而是空字符串""。这是因为property标记未返回值。在解析OGNL表达式时抛出并捕获异常。在这种情况下,property标记不返回任何内容。