[ 
https://issues.apache.org/jira/browse/WW-4987?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16702787#comment-16702787
 ] 

Muhammad Salman edited comment on WW-4987 at 11/29/18 6:55 AM:
---------------------------------------------------------------

Hi [~aleksandr-m]
I have tried your proposed solution, here is what I did:

{code:xml}
<s:select
                list="#{'none':'--Select Template--'}"
                id="export-data"
                cssStyle="width:250px;"
                title="templateDesc"
                cssClass="templateType"
                onchange="adjustReportText()"
                name="templateID"
                listCssClass="templateType"
                >
        <s:iterator 
value="%{@com.ibm.hscms.web.cache.ReportingTemplatesCache@getTemplatelistByGroup('inventory',#session.pro_user)}"
 var="TG" status="stat">
                <optgroup label="<s:property value='key' />" list="%{value}" 
listKey="templateId" listValue="templateName" ></optgroup>
        </s:iterator>
</s:select>
{code}

Here is the output HTML Being generated by jsp : 

{code:xml}
<optgroup label="Cognos Reports" list="%{value}" listkey="templateId" 
listvalue="templateName"></optgroup>
                                                        
<optgroup label="Executive Dashboard" list="%{value}" listkey="templateId" 
listvalue="templateName"></optgroup>

<optgroup label="Global Priority Reports" list="%{value}" listkey="templateId" 
listvalue="templateName"></optgroup>

<optgroup label="Global Reports" list="%{value}" listkey="templateId" 
listvalue="templateName"></optgroup>

<optgroup label="Inventory Upload Report" list="%{value}" listkey="templateId" 
listvalue="templateName"></optgroup>

<optgroup label="Miscellaneous" list="%{value}" listkey="templateId" 
listvalue="templateName"></optgroup>

<select name="templateID" id="export-data" class="templateType" 
style="width:250px;" title="templateDesc" onchange="adjustReportText()">
        <option value="none">--Select Template--</option>
</select>
{code}

I know that the {color:red}list="%{value}" listKey="templateId" 
listValue="templateName" {color} should not go as is in the <optgroup> tag but 
If I remove these values then how would struts taglib know that this particular 
option would go into that particular <optgroup>

Let me share with you my datastructure as well which I am using to populate 
s:select which was working in struts 2.2.3:

{code:xml}Map<String,List<Template>> map = new 
LinkedHashMap<String,List<Template>>();{code}

Now I hope you can related this data-structure to my orignal <s:select> 
defination.


was (Author: mfsalmani678):
Hi [~aleksandr-m]
I have tried your proposed solution, here is what I did:

{code:xml}
<s:select
                                                                
list="#{'none':'--Select Template--'}"
                                                                id="export-data"
                                                                
cssStyle="width:250px;"
                                                                
title="templateDesc"
                                                                
cssClass="templateType"
                                                                
onchange="adjustReportText()"
                                                                
name="templateID"
                                                                
listCssClass="templateType"
                                                                >
                                                        <s:iterator 
value="%{@com.ibm.hscms.web.cache.ReportingTemplatesCache@getTemplatelistByGroup('inventory',#session.pro_user)}"
 var="TG" status="stat">
                                                                <optgroup 
label="<s:property value='key' />" list="%{value}" listKey="templateId" 
listValue="templateName" ></optgroup>
                                                        </s:iterator>
                                                </s:select>
{code}

Here is the output HTML Being generated by jsp : 

{code:xml}
<optgroup label="Cognos Reports" list="%{value}" listkey="templateId" 
listvalue="templateName"></optgroup>
                                                        
                                                                <optgroup 
label="Executive Dashboard" list="%{value}" listkey="templateId" 
listvalue="templateName"></optgroup>
                                                        
                                                                <optgroup 
label="Global Priority Reports" list="%{value}" listkey="templateId" 
listvalue="templateName"></optgroup>
                                                        
                                                                <optgroup 
label="Global Reports" list="%{value}" listkey="templateId" 
listvalue="templateName"></optgroup>
                                                        
                                                                <optgroup 
label="Inventory Upload Report" list="%{value}" listkey="templateId" 
listvalue="templateName"></optgroup>
                                                        
                                                                <optgroup 
label="Miscellaneous" list="%{value}" listkey="templateId" 
listvalue="templateName"></optgroup>
                                                        
                                                                <select 
name="templateID" id="export-data" class="templateType" style="width:250px;" 
title="templateDesc" onchange="adjustReportText()">
                                                                        <option 
value="none">--Select Template--</option>
                                                                </select>
{code}

I know that the {color:red}list="%{value}" listKey="templateId" 
listValue="templateName" {color} should not go as is in the <optgroup> tag but 
If I remove these values then how would struts taglib know that this particular 
option would go into that particular <optgroup>

Let me share with you my datastructure as well which I am using to populate 
s:select which was working in struts 2.2.3:

{code:xml}Map<String,List<Template>> map = new 
LinkedHashMap<String,List<Template>>();{code}

Now I hope you can related this data-structure to my orignal <s:select> 
defination.

> Setting Struts2 <s:select> options Css Class
> --------------------------------------------
>
>                 Key: WW-4987
>                 URL: https://issues.apache.org/jira/browse/WW-4987
>             Project: Struts 2
>          Issue Type: Bug
>          Components: Core Tags
>    Affects Versions: 2.5.17
>            Reporter: Muhammad Salman
>            Assignee: Aleksandr Mashchenko
>            Priority: Major
>             Fix For: 2.6, 2.5.19
>
>
> Hi
> I am working on an application that is built on struts 2.5.17. I have 
> {{<s:select>}} tag with <optgroup> and <option>. I am trying to add cssClass 
> to <options> under <optgroup>. I am trying to add css class to <option> using 
> listCssClass attribute of {{<s:select>}} but it is not adding class to the 
> <option>. Any help would be much appreciated.
> Here is code from my JSP:
> {code:xml}
> <s:select list="#\{'none':'-Select Template-'}" id="export-data" 
> cssStyle="width:250px;" title="templateDesc" cssClass="templateType" 
> onchange="adjustReportText()" name="templateID" listCssClass="templateType"> 
> <s:iterator value="\{SOME MAP WITH KEY AND LIST OF VALUES}" var="TG" 
> status="stat"> 
> <s:optgroup label="%\{key}" list="%\{value}" listKey="templateId" 
> listValue="templateName" ></s:optgroup> 
> </s:iterator> 
> </s:select>
> {code}
>  Initially we were working on struts 2.2.3 version and in that version, 
> cssClass attribute populates the CSS Class for <option>, but in 2.5.17 
> neither cssClass is populated class to <option> nor listCssClass.
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to