我正在开发一个Struts2应用程序。我在JSP中设置隐藏字段的值,目的是通过JavaScript访问它。
我的JSP代码:
<s:iterator value="collegelist">
<tr>
<td align="center"><s:property value="collegename"/></td>
<s:hidden name="hiddenname" key="collegename" />
</tr>
</s:iterator>
我的JS代码:
var myForm = document.frmAction;
var text = myForm.hiddenname.value;
alert("hidden field text is:" + text);
警报显示空白值。
原因是什么?如何解决?
答案 0 :(得分:3)
尝试
element = document.getElementsByName("hiddenname");
alert(element[0].value);
答案 1 :(得分:0)
我尝试了你的代码,它确实有效..问题出在服务器代码本身的某个地方..
答案 2 :(得分:0)
确保您只有一个名称为“frmAction”的表单,并且只有一个名为“hiddenname”的隐藏字段。如果你有多个,你将获得一个数组而不是一个值。
答案 3 :(得分:0)
您生成多个具有相同名称的字段,因为您的代码位于s:iterator
标记内。你的Javascript中显然应该有这样一个循环:
var hiddenFields = document.getElementsByName("hiddenname");
for (var i = 0; i < hiddenFields.length; i++) {
alert("hidden field text is::" + hiddenFields[i].value);
}
另外,验证生成的HTML中的值是否为空,并且隐藏字段的名称是hiddenname。
答案 4 :(得分:0)
问题的根源在于你是一个迭代器。 Struts为您更新名称,以便正确地连接所有内容。如果您拉起页面并查看源代码,您的隐藏字段可能如下所示:
<input type="hidden" name="collegelist[0].hiddenname" value="thename"/>
无论如何,如果您希望按名称检索工作,请不要相信您提供给struts标记的名称。始终拉起生成的源并查看该字段实际具有的名称。