如何获取循环生成的一组下拉菜单的唯一 ID?

How to get Unique ID for a group of dropDowns generated by a loop?

请帮我解决以下问题。

代码:

<%for(int ind=0;ind<15;ind++){%>

 <tr>
   <struts-el:select name="OpEnh01pagSincomModelMaintanenceFormBean" property="mdlCode" styleId="mdlDrpDown_+'<%=ind %>'" onchange="modelCodeChanged(this.id)">
     <struts-el:options collection="listmodelCodes" property="modelCode" labelProperty="modelCodeDesc" />
   </struts-el:select> 
 </tr>

<%}%>

1) 我想要 15 行中的 15 个下拉菜单。我想要 dropDown 的索引来识别在 JavaScript.

中修改了哪个 dropDown

2) 我想获得一个唯一的 id,以便我可以使用 onChangeEvent 调用的 JavaScript 中的 dom 访问它。

我有一个表单 bean 名称属性 mdlDrpDown1、mdlDrpDown2 等等..

我试过这种格式:styleId="mdlDrpDown_+'<%=ind %>'" 但无法获取它,因为 styleId,属性 属性不是 runTimeExpr。

您的 styleId 的格式将生成如下 ID:

id="mdlDrpDown_+'1'" 
id="mdlDrpDown_+'2'"

你应该这样写styleId:

styleId="mdlDrpDown_<%=ind %>"

那么 id 将是这样的:

id="mdlDrpDown_1" 
id="mdlDrpDown_2"

您正在为 select 使用动态 属性 名称 mdlCode<%=ind %>,如果在表单 bean 中找不到 getter 和 setter,则 No getter method Exception will be raised,为了避免这种情况,我们可以使用index based properties(它可以根据索引保存多个值,索引值将按照元素在页面中出现的顺序排列)而不是single properties(它只能保存一个值)。

试试下面的代码:

FormBean:

//create getter and setter for `mdlCode` using String[], so it can hold dynamic values.

String[] mdlCode;

public String[] getMdlCode() {
   return mdlCode;
}
public void setMdlCode(String[] mdlCode) {
   this.mdlCode=mdlCode;
}

JSP:

<%for(int ind=0;ind<15;ind++) {
    String id = "mdlDrpDown_"+ind;
%>

<tr>
    <!-- change property from `property="mdlCode<%=ind %>"` to property='mdlCode' -->
    <struts-el:select name="OpEnh01pagSincomModelMaintanenceFormBean" property="mdlCode" styleId="<%=id %>" onchange="modelCodeChanged(this.id)">
        <struts-el:options collection="listmodelCodes" property="modelCode" labelProperty="modelCodeDesc" />
    </struts-el:select> 
</tr>

<%}%>