You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Mi...@wellsfargo.com on 2005/02/03 18:44:51 UTC

RE: Help with logic tags, and commas please.

How do I check to make sure there are any elements in the Map?
There is a possibility that the map will be empty.

--------------------
Mick Knutson
Wells Fargo Business Direct
(415) 222-1020

"This message may contain confidential and/or privileged information. If you are not the addressee or authorized to receive this for the addressee, you must not use, copy, disclose, or take any action based on this message or any information herein. If you have received this message in error, please advise the sender immediately by reply e-mail and delete this message. Thank you for your cooperation."
--------------------



-----Original Message-----
From: Kishore Senji [mailto:ksenji@gmail.com]
Sent: Wednesday, January 19, 2005 6:49 PM
To: Struts Users Mailing List
Subject: Re: Help with logic tags, and commas please.


On Wed, 19 Jan 2005 18:25:55 -0800, Kishore Senji <ks...@gmail.com> wrote:
> On Wed, 19 Jan 2005 18:49:52 -0600, Mick.Knutson@wellsfargo.com
> <Mi...@wellsfargo.com> wrote:
> > I need to know an additional question:
> > You sent me:
> >
> > <c:forEach items="${sessionScope.auditorList}" var="auditor" varStatus="status">
> >
> > I need to know if this would be correct as well, where creditApplicationListDto.businessLine is a Boolean:
> >
> > <c:forEach items="${creditApplicationListDto.businessLine}" var="true" varStatus="status">
> 
> Nope. "items" should evaluate to a collection.
> In JSTL it would be something like the below code to solve your
> problem (I haven't tested it, Just wrote it on top of my head)
> 
> <c:if test="${creditApplicationListDto.businessLine}">
>   <bean:message key="label.bln"/>
>   <c:set var="found" value="true"/>
> </c:if>
> <c:if test="${creditApplicationListDto.businessCard}">
>   <c:choose>
>      <c:when test="${found}">
>        ,&nbsp;<bean:message key="label.bcard"/>
>      </c:when>
>      <c:otherwise>
>        <bean:message key="label.bcard"/>
>        <c:set var="found" value="true"/>
>      </c:otherwise>
>   </c:choose>
> </c:if>
> <c:if test="${creditApplicationListDto.securedCard}">
>   <c:choose>
>      <c:when test="${found}">
>        ,&nbsp;<bean:message key="label.seccard"/>
>      </c:when>
>      <c:otherwise>
>        <bean:message key="label.seccard"/>
>        <c:set var="found" value="true"/>
>      </c:otherwise>
>   </c:choose>
> </c:if>
> <c:if test="${creditApplicationListDto.equipmentExpress}">
>   <c:choose>
>      <c:when test="${found}">
>        ,&nbsp;<bean:message key="label.equipExpress"/>
>      </c:when>
>      <c:otherwise>
>        <bean:message key="label.equipExpress"/>
>        <c:set var="found" value="true"/>
>      </c:otherwise>
>   </c:choose>
> </c:if>
> 
> Look how large the chunk of code is. 

You can also do it like this 

<%
  Map map = new HashMap();
  if(creditApplicationListDto.getBusinessLine()){ // assuming that you
make the "creditApplicationListDto" available as a scripting variable
    map.put("label.bln", creditApplicationListDto.getBusinessLine());
  }
  if(creditApplicationListDto.getBusinessCard()){
      map.put("label.bcard", creditApplicationListDto.getBusinessCard());
  }
  if(creditApplicationListDto.getSecuredCard()){
      map.put("label.seccard", creditApplicationListDto.getSecuredCard());
  }
  if(creditApplicationListDto.getEquipExpress()){
      map.put("label.equipExpress", creditApplicationListDto.getEquipExpress());
  }
  pageContext.setAttribute("map", map);
%>

<c:forEach items="${map.keySet}" var="key" varStatus="status">
  <c:choose>
    <c:when test="${not status.last}"><bean:write
message="${map[${key}]}"/>,&nbsp;</c:when>
    <c:otherwise><bean:write message="${map[${key}]}"/></c:otherwise>
  </c:choose>
</c:forEach>

All we did here is to create a collection which holds only the "true"
values. Note that you can do this in the DTO if you want to and expose
the collection through a getter

> Better way of doing it is by
> having some sort of an utility method or using a tag as "Jim"
> suggested
> 
> >
> > --------------------
> > Mick Knutson
> > Wells Fargo Business Direct
> > (415) 222-1020
> >
> > "This message may contain confidential and/or privileged information. If you are not the addressee or authorized to receive this for the addressee, you must not use, copy, disclose, or take any action based on this message or any information herein. If you have received this message in error, please advise the sender immediately by reply e-mail and delete this message. Thank you for your cooperation."
> > --------------------
> >
> > -----Original Message-----
> > From: bmf5@daimlerchrysler.com [mailto:bmf5@daimlerchrysler.com]
> > Sent: Friday, January 14, 2005 11:18 AM
> > To: Struts Users Mailing List
> > Subject: Re: Help with logic tags, and commas please.
> >
> > Not exactly the same, since I have use of a list but here's how I handled
> > it in JSTL...
> >
> >      <c:forEach items="${sessionScope.auditorList}" var="auditor"
> > varStatus="status">
> >
> >            <c:if test="${!status.last}">
> >                  <c:out value="${auditor.name}"/>,&nbsp
> >            </c:if>
> >
> >            <c:if test="${status.last}">
> >                  <c:out value="${auditor.name}"/>
> >            </c:if>
> >
> >      </c:forEach>
> >
> > Bart
> >
> > <Mi...@wellsfargo.com> wrote on 01/14/2005 02:04:07 PM:
> >
> > > I have the following code that prints something like this:
> > > BLN, BCard, SecCard, EquipExp
> > >
> > > There may be any combination of any of these 4 items, or non at all.
> > > And what I want is the ability to properly add commas after each
> > > item, or not print a comma if there is not an item:
> > >
> > > <logic:equal name="creditApplicationListDto" property="businessLine"
> > > value="true">
> > >     <bean:message key="label.bln"/>&nbsp;,
> > > </logic:equal>
> > > <logic:equal name="creditApplicationListDto" property="businessCard"
> > > value="true">
> > >     <bean:message key="label.bcard"/>&nbsp;,
> > > </logic:equal>
> > > <logic:equal name="creditApplicationListDto" property="securedCard"
> > > value="true">
> > >     <bean:message key="label.seccard"/>&nbsp;,
> > > </logic:equal>
> > > <logic:equal name="creditApplicationListDto"
> > > property="equipmentExpress" value="true">
> > >     <bean:message key="label.equipExpress"/>&nbsp;
> > > </logic:equal>
> > >
> > >
> > > --------------------
> > > Mick Knutson
> > > Wells Fargo Business Direct Information Systems
> > > (415) 222-1020
> > >
> > > "This message may contain confidential and/or privileged
> > > information. If you are not the addressee or authorized to receive
> > > this for the addressee, you must not use, copy, disclose, or take
> > > any action based on this message or any information herein. If you
> > > have received this message in error, please advise the sender
> > > immediately by reply e-mail and delete this message. Thank you for
> > > your cooperation."
> > > --------------------
> > >
> > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> > > For additional commands, e-mail: user-help@struts.apache.org
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> > For additional commands, e-mail: user-help@struts.apache.org
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> > For additional commands, e-mail: user-help@struts.apache.org
> >
> >
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org