Struts 2 s:选择标签动态ID
我在JSP页面中有多个不同类型的字段和一个按钮。 这些字段是根据从我创建的元数据表中获取的信息生成的。
由于我不知道有多少和哪种类型的字段存在, 我给它们动态id
。 我在JSP中使用Struts 2标签。
问题出在
标签上:当我在id
属性中给出scriplet时,它会显示以下错误:
org.apache.jasper.JasperException:/success.jsp(83,12)引用符号
<s:select styleClass="login-textbox" style="width:130px" list="#masterColDO.validation" name="chngdColumnValues" id= /> <input type= class="login-textbox " name="chngdColumnValues" id= />
Javascript如下:
var addUpdateBtnId = document.getElementById('addUpdateBtnId'); addUpdateBtnId.value='Update'; addUpdateBtnId.onclick = function() { onClickUpdateBtn(rowIndex); }; var selectedUpdateRow = xmlhttp.responseText.split(","); for(var i = 0; i < selectedUpdateRow.length; i++){ var columnElementId = "columnId"+i; document.getElementById(columnElementId).value = selectedUpdateRow[i]; } document.getElementById("columnId"+(primaryKeyPos-1)).readOnly = true;
Scriptlet
是旧的做事方式, 你应该避免在JSP
编写Java
代码 ;
Struts2仅使用其标签和OGNL
帮助您实现相同的目标。
部分正在运行,因为您正在HTML标记内注入一个
scriptlet
,这是允许的。
部分无效,因为您在Struts2标记内部注入了一个scriptlet
,这是不允许的。
为了使它工作,你应该在OGNL
使用#attr
语法来访问在Scriptlets
声明的Java
变量,并在Page Context
推送,就像这样(完全未经测试):
<% for (int counter=0;counter <% } %>
但是,即使技术上可行,也不鼓励它。 您应该使用纯Struts2方式,如下所示:
PS:Struts标签没有任何styleClass
属性; 你可以使用cssClass
和/或cssStyle
;
并且,如果controlType
是String,则应使用.equals
而不是==
:
。
您应该使用Struts2表达式语法,如下所示:
id="%{'columnId' + count}"
Struts2使用valuestacks,所以这个计数应该以ognl方式获取,尝试这样的事情:
id="%{'columnId'+count}"