支柱 2 s:选择标签动态 ID
Struts 2 s:select tag dynamic id
我在JSP页面中有多个各种类型的字段和一个按钮。这些字段是根据从我创建的元数据表中获取的信息生成的。
由于我不知道存在多少字段和什么类型的字段,因此我正在为它们提供动态id
。我在我的 JSP 中使用了 Struts 2 标签。
问题出在<s:select>
标签上:当我在 id
属性中给出 scriplet 时,它会显示以下错误:
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
是旧的做事方式,你应该完全避免在JSP
中编写Java
代码;
Struts2 仅使用其标签和OGNL
帮助您实现相同的目标。
<input />
部分正在工作,因为您将scriptlet
注入 HTML 标记,这是允许的。
<s:select />
部分不起作用,因为您在 Struts2 标签中注入了scriptlet
,这是不允许的。
要使其工作,您应该在 OGNL
中使用#attr
语法来访问在 Scriptlets
中声明并由您在Page Context
中推送的Java
变量,如下所示(完全未经测试):
<%
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>
PS:支柱标签没有任何styleClass
属性; 您可以使用cssClass
和/或cssStyle
;
而且,如果controlType
是字符串,则应使用 .equals
而不是 ==
: <s:if test="%{#masterColDO.controlType.equals('dropdown')}">
。
你应该使用 Struts2 表达式语法,如下所示:
id="%{'columnId' + count}"
Struts2 使用值堆栈,所以这个计数应该以 ognl 的方式获取,尝试这样的事情:
id="%{'columnId'+count}"
- Highcharts动态更改标签
- 为图例添加动态色彩标签
- 如何从使用 jquery 动态创建的视频标签中获取视频时长
- 使用 struts 标签和 Javascript 的动态行为保留表单中的值
- 如何在 jquery 中的 find() 中动态提供元素/标签
- 如何在动态生成的 HTML 表中使用 2D 数组在 TD 标签中设置值
- 动态生成 id,并分配给标签
- 通过 JavaScript 动态创建和打印 h1 标签
- Extjs 3.3动态地将字段添加到表单中,并设置它们的标签宽度
- Angular 2-我如何使我的index.html文件的标题和关键字和描述的元标签是动态的
- 使用动态og标签进行测试的facebook共享按钮
- 动态自定义文本堆栈标签Highcharts
- 如何将JavaScript动态添加到</身体>标签
- Struts2 显示标签动态链接显示相同的行值
- HTML5音频标签动态src ajax它不播放
- 导航标签动态加载/显示
- 将@media标签动态绑定到元素
- 如何用数组元素作为按钮的标签动态创建单选按钮
- 关闭按钮关闭标签面板中的活动选项卡,而不是标签按钮附加到EXTJS(标签动态创建)
- 支柱 2 s:选择标签动态 ID