我在一个 JSP 页面和一个按钮中有多个不同类型的字段。
这些字段是根据从我创建的元数据表中获取的信息生成的。
由于我不知道存在多少个字段以及什么类型的字段,我给动态id
给他们。我在 JSP 中使用 Struts 2 标签。
问题在于<s:select>
标签:当我在里面给出 scriplet 时id
属性,它显示以下错误:
org.apache.jasper.JasperException:/success.jsp(83,12) 需要引用符号
<s:if test="%{#masterColDO.controlType=='dropdown'}">
<s:select styleClass="login-textbox"
style="width:130px"
list="#masterColDO.validation"
name="chngdColumnValues"
id=<%="columnId" + count%> />
</s:if>
<s:else>
<input type=<s:property value="#masterColDO.controlType" />
class="login-textbox "
name="chngdColumnValues"
id=<%="columnId" + count%> />
</s:else>
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
s是旧的做事方式,你应该避免写作Java代码在JSP根本就是;
Struts2 使用其标签帮助您实现相同的目标OGNL
only.
The <input />
部分正在工作,因为您正在注入scriptlet
在 HTML 标记内,这是允许的。
The <s:select />
部分不起作用,因为您正在注入scriptlet
在 Struts2 标签内,这是不允许的。
为了使它工作,你应该使用#attr
语法在OGNL
访问Java
声明于的变量Scriptlets
并推by you in the Page Context
,像这样(完全未经测试):
<%
for (int counter=0;counter<myList.size();counter++) {
// pushing it into the pageContext
pageContext.setAttribute("counter",counter);
%>
<s:select cssClass="login-textbox"
cssStyle="width:130px"
list="#masterColDO.validation"
name="chngdColumnValues"
id="%{'columnId' + #attr['counter']}" />
<%
}
%>
然而,即使技术上可行,也不鼓励这样做。您应该使用纯 Struts2 方式,如下所示:
<s:iterator value="myList" status="ctr">
<s:select cssClass="login-textbox"
cssStyle="width:130px"
list="#masterColDO.validation"
name="chngdColumnValues"
id="%{'columnId' + #ctr.index}" />
</s:iterator>
P.S: Struts 标签没有任何styleClass
属性;您可以使用cssClass
and/or cssStyle
;
而如果controlType
是一个字符串,你应该使用.equals
代替==
: <s:if test="%{#masterColDO.controlType.equals('dropdown')}">
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)