我在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);
确实在警报中给出了一个值。 可能是什么原因?
答案 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
标记不返回任何内容。