Struts 2 s: select dynamic id tag

I have several fields of various types on a JSP page and one button. These fields are created based on information obtained from the metadata table I created.

Since I do not know how many and what types of fields are present, I give them dynamicid . I am using Struts 2 tags in my JSP.

The problem is with the tag <s:select>: when I give a scriplet inside the attribute id, it displays the following error:

org.apache.jasper.JasperException: /success.jsp (83,12) symbol character expected

<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 is as follows:

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;
+5
source share
3 answers

Scriptlet - , Java JSP ;
Struts2 , OGNL.

<input /> , Scriptlet HTML-, .

<s:select /> , Scriptlet Struts2, .

, #attr OGNL Java, Scriptlets 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 / cssStyle;
, controlType , .equals ==: <s:if test="%{#masterColDO.controlType.equals('dropdown')}">.

+8

Struts2, :

id="%{'columnId' + count}"
+3

Estimates of using Struts2, so this score should be obtained using ognl, try something like this:

id="%{'columnId'+count}"
0
source

All Articles