Die Common-Controls Tag Bibliothek

<forms:forEach>

Das Tag iteriert über die angegebene Kollektion von Elementen. Die Properties aller geschachtelten <form>-Tags werden relativ zum aktuellen Iterationselement interpretiert.
Das Tag darf nur innerhalb eines com.cc.framework.taglib.forms.FormElementContainerTag verwendet werden. Beispiele hierfür sind <forms:form> und <forms:section>
../images/images/formforeach_small.gif

Body content: JSP
Tag class: ForEachTag
 

[ Syntax ]

Standard Syntax
<forms:forEach
[ id = "String" ]
[ indexId = "String" ]
[ name = "String" ]
[ property = "String" ]
[ scope = "{any | page | request | session | application}" ]
>
...Body Content...

</forms:forEach>
 

[ Attribute ]

AttributTypBeschreibungPflichtRTExp
idString Weist dem Kontrollelement einen eindeutigen Bezeichner zu. Im Tag Body wird daraufhin eine Java Variable angelegt, auf welche in Java Scriptlets zugegriffen werden kann. Diese Variable verweist auf die Kontrollelement Instanz.

Dieses Attribut wird meist in Verbindung mit dem type Attribut verwendet

Anmerkung: Da zur JSP Compile Zeit eine Java Variable mit diesem Bezeichner angelegt wird, muss hier ein String Literal (und keine Expression!) angegeben werden! Der Bezeichner muss den Regeln für gültiger Java Bezeichner folgen.

 
indexIdString Der name der Index variablen vom typ integer.

Anmerkung: Da zur JSP Compile Zeit eine Java Variable mit diesem Bezeichner angelegt wird, muss hier ein String Literal (und keine Expression!) angegeben werden! Der Bezeichner muss den Regeln für gültiger Java Bezeichner folgen.

 
nameString Gibt den Namen der Java-Bean an. Die Java-Bean muss im angegebenen Scope (siehe scope-Attribut) abgelegt sein.

Wenn das Tag von einem Struts <html:form> Tag umschlossen ist, dann muss kein Bean Name angegeben werden. In diesem Fall wird die Java-Bean über ein Property der Struts Formular Bean gezogen.

Anmerkung: Es muss ein gültiger Java Bezeichner angegeben werden.

 
propertyString Gibt den Namen des Properties an, welches die Daten für das Formularelement liefert.

Dies ist in der Regel nur dann notwendig, wenn die Java-Bean mit einer Struts Formular Bean assoziiert ist.

Anmerkung: Es muss ein gültiger Java Bezeichner angegeben werden.

 
scopeHttpScope Dieses Attribut gibt den Scope an, in welchem die Java-Bean mit den eigentlichen Anzeigedaten zu finden ist.
  • any = Nach der Bean wird in jedem Scope gesucht.
  • page = Die Bean liegt im PageContext der JSP Seite.
  • request = Die Bean liegt im HTTP Servlet Request
  • session = Die Bean liegt in der HTTP Session
  • application = Die Bean liegt applikationsweit im Servlet Kontext
 

[ Beispiel ]

Iteration über Formularelemente mit forEach Element.


<%@ taglib uri="http://struts.apache.org/tags-html"               prefix="html" %>
<%@ taglib uri="http://www.common-controls.com/cc/tags-base"      prefix="base" %>
<%@ taglib uri="http://www.common-controls.com/cc/tags-forms"      prefix="forms" %>

<html:form action="/sample815/foreachdemo">

   <forms:form 
      type="edit" 
      caption="user.form.comment" 
      formid="frmEdit" 
      width="650"  
      help="HID-100">

      
      <forms:row>
         <forms:text
            label="user.form.lname"
            property="lastName"
            size="15"
            maxlength="20"
            required="true"
            help="HID-101"/>

   
         <forms:text
            label="user.form.fname"
            property="firstName"
            size="15"
            maxlength="20"
            required="true"
            help="HID-102"/>

      </forms:row>

      <forms:forEach id="co" property="comments">

         <%--  Make sure you have EL expressions enabled (web.xml >= 2.4) otherwise the expression ${co.commentId} gets not evaluated!  --%>
         <forms:section 
            title="user.form.comments#${co.commentId}">


            <forms:plaintext
               label="user.form.commentid"
               property="commentId"/>


            <forms:textarea
               label="user.form.comment"
               property="comment"
               required="false"
               cols="80"
               rows="3"
               help="HID-1001"
               valign="top"/>


            <forms:row>
               <forms:calendar 
                  label="user.form.untildate"
                  property="untilDate"
                  required="false"
                  help="HID-1002"/>


               <forms:select
                  label="user.form.completed"
                  property="completed"
                  required="true"
                  help="HID-1003">


                  <%--  the "/completedOptions" syntax will access the option list in the surrounding form bean scope!  --%>
                  <base:options property="/completedOptions"/>
               </forms:select>

            </forms:row>
         </forms:section>

      </forms:forEach>

      <forms:buttonsection default="btnCancel">
         <forms:button  
            name="btnSave"   
            text="button.title.save"    
            title="button.title.save" 
            onclick="alert('Not supported'); return false;"/>


         <forms:button  
            name="btnBack"   
            text="button.title.back"    
            title="button.title.back" 
            onclick="alert('Not supported'); return false;"/>


      </forms:buttonsection>
   </forms:form>

</html:form>