2015-08-27 4 views
0

Пожалуйста, помогите мне решить эту проблему ниже.Как получить уникальный идентификатор для группы dropDowns, сгенерированных циклом?

Код:

<%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 определял, какой dropDown изменен в JavaScript.

2) Я хочу получить уникальный идентификатор, чтобы получить доступ к нему с помощью dom в JavaScript, называемом onChangeEvent.

У меня есть форма боба Имя свойства mdlDrpDown1, mdlDrpDown2 и так далее ..

Я попробовал этот формат: styleId="mdlDrpDown_+'<%=ind %>'" но не смог получить его как styleId, атрибут свойство не runTimeExpr.

+0

OnChange проходит 'this.id', но нет атрибута ID установлен. –

+0

На самом деле в сгенерированном html. Атрибут «styleId» преобразуется в атрибут «id». Поэтому я использовал this.id как параметр для JS. Но моя главная проблема: я не могу получить loopIndex в свойстве или атрибуте StyleID. – Vishnu300

ответ

0

Вы используя динамические имена свойств mdlCode<%=ind %> для select, если геттер и сеттер не являются f ound в formbean, то No getter method Exception will be raised, чтобы избежать этого, мы можем index based properties (который может содержать несколько значений на основе индекса, значение индекса будет содержать порядок элементов на странице) вместо single properties (который может содержать только одно значение).

Попробуйте следующий код:

: компонент формы

//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> 

<%}%> 
+0

Я попытался и получил ошибку: JSPG0124E: Пользовательский атрибут тега styleId не может быть выражением времени исполнения. value: "[% = id%]" – Vishnu300

+0

Теперь я изменил styleId = "const" a ** constant ** >> Страница загружена и теперь сгенерированный html для всех элементов выбора имеет: ** name = "mdlCode" id = "const" ** 1) изменение атрибута свойства не является полезным. 2) styleID ** не может иметь никаких выражений rutime в нем **. поэтому я не могу получить скрипт <%=ind %> здесь. – Vishnu300

+0

@SalmanParacha: Вы можете проверить это один раз. Этот вопрос похож на ваш предыдущий пост: [ссылка] (http://stackoverflow.com/questions/5970295/how-to-append-loop-index-of-cforeach-tag-to-struts-html -tag-attributes) – Vishnu300

-1

Формат вашего styleId будет производить идентификаторы, как:

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

Вы должны написать styleId так:

styleId="mdlDrpDown_<%=ind %>" 

тогда Идентификаторы будут как:

id="mdlDrpDown_1" 
id="mdlDrpDown_2" 
+0

@ Brijesh: я получил ошибку, когда пытался: styleId = "mdlDrpDown_ <%=ind %>" javax.servlet.jsp.JspException: Нет метод геттер для недвижимости mdlDrpDown _% = Ind% для компонента. <%=ind> не оценивается. – Vishnu300

+0

Тогда я попробовал: styleId = "<%=ind %>". Ошибка: JSPG0124E: Пользовательский атрибут атрибута тега не может быть выражением времени исполнения. value: "[% = india%]" Это же файл tld также. – Vishnu300

+0

@ Vishnu300 Не знаю об этом исключении. Но я думаю, что сценарий не может помочь вам здесь. –

Смежные вопросы