Mark,

Attached is the sitemap, flow script and the form model. 

Thanks




-----Original Message-----
From: Mark Lundquist [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, April 06, 2004 11:36 AM
To: [EMAIL PROTECTED]
Subject: Re: Cform - Help with redisplaying form after submission 


On Apr 6, 2004, at 11:05 AM, Uchenna Igwebuike wrote:

> Below is a snapshot of the flow

I might be able to help if you include the whole flowscript function 
instead of just an excerpt.  For instance, I can't see the loop in what 
you sent.
~ mark


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
     
*****************   Site map   ***********************

<map:match pattern="material-type-display-pipeline">
                <map:generate src="forms/material-type-template.xml">
                    <map:parameter name="contextPath" value="{request:contextPath}"/>
                </map:generate>
                <map:transform type="forms"/>
                <map:transform type="i18n"/>
                <map:transform 
src="context://common/stylesheets/default/transc-page2html.xsl">
                    <map:parameter name="contextPath" value="{request:contextPath}"/>
                </map:transform>
                <map:transform 
src="context://common/forms/resources/forms-styling.xsl">
                    <map:parameter name="resources-uri" 
value="{request:contextPath}/common/forms/resources"/>
                </map:transform>
                <map:serialize/>
</map:match>


*****************   Flow Script   ***********************

cocoon.load("resource://org/apache/cocoon/forms/flow/javascript/Form.js");

importPackage(java.util);

function materialType(form) {
    //Set Locale
    var locale = cocoon.request.getLocale();
    myForm=form;
    myForm.locale = locale;

    sproxy = 
Packages.com.company.zeus.sproxy.BusinessServiceManager.getInstance().getMaterialService();
    var formInfo = sproxy.getMaterialTypeFormInfo(locale);

    var data = new Object();  //Holds all required lists
    data.materialGroup = formInfo.getMaterialGroup();
    data.stockMeasure = formInfo.getStockMeasure();
    data.currencyMeasure = formInfo.getCurrencyMeasure();
    data.freightGroup = formInfo.getFrieghtGroup();
    data.documentSequence = formInfo.getDocumentSequence();

    //If request contains a material type name, load form with data
    var name = cocoon.request.get("materialTypeName");
    if(name != null) {
        try {
              //Load form with data from DB
                var msg = form.getWidget("message");
                bean = sproxy.readMaterialType(locale,name);
                form.load(bean);
                var args = [name];
                var i18nVal = 
Packages.org.apache.cocoon.components.messages.MessageHandler.getMessage
                (inventoryMessages,myForm.locale,"materialType.message.save",args);
                msg.value = i18nVal;
         }catch(ex) {
                 if(ex instanceof 
Packages.com.company.zeus.service.system.exceptions.BaseAppException) {
                     var i18nVal = 
Packages.org.apache.cocoon.components.messages.ExceptionHandler.
                     getWebExceptionMessage(inventoryMessages,myForm.locale,ex);
                     msg.value = i18nVal;
                 } else {
                     throw ex;
                 }
         }
     }
     myForm.showForm("material-type-display-pipeline", data);

    //if submit is a close, send to summary page
    if (form.submitId == "close") {
        dispatch = null;
        cocoon.sendPage("");
    }else {
        var msg = form.getWidget("message");
        form.save(bean);
        try {
            if(dispatch != null) {
                if(dispatch.equals("create")) {
                    sproxy.createMaterialType(locale,bean);
                    dispatch = "update"; //reset to ensure back button will not create 
new objects
                }else if(dispatch.equals("update")) {
                    sproxy.updateMaterialType(locale,bean);
                }
                //Load form with data from DB
                bean = sproxy.readMaterialType(locale,bean.name);
                form.load(bean);
                var args = [bean.name];
                var i18nVal = 
Packages.org.apache.cocoon.components.messages.MessageHandler.getMessage
                (inventoryMessages,myForm.locale,"materialType.message.save",args);
                msg.value = i18nVal;
            }
        }catch(ex) {
                 if(ex instanceof 
Packages.com.company.zeus.service.system.exceptions.BaseAppException) {
                     var i18nVal = 
Packages.org.apache.cocoon.components.messages.ExceptionHandler.
                     getWebExceptionMessage(inventoryMessages,myForm.locale,ex);
                     msg.value = i18nVal;
                 } else {
                     throw ex;
                 }
        }
         //Redisplay the form with the transaction messages
        form.showForm("material-type-display-pipeline", data);
        //cocoon.sendPage("material-type?materialTypeName=" + bean.name, null);
        //cocoon.sendPage("material-type-success-pipeline", { "materialType": bean });
     }
}


*****************   Form Model  ***********************

<?xml version="1.0" encoding="ISO-8859-1"?>
<fd:form
    xmlns:fd="http://apache.org/cocoon/forms/1.0#definition";
    xmlns:i18n="http://apache.org/cocoon/i18n/2.1";>

    <fd:widgets>

        <!-- Control Fields -->
        <fd:field id="tab-state">
            <fd:datatype base="string"/>
        </fd:field>

        <!-- Header values -->
        <fd:field id="id">
            <fd:datatype base="long"/>
        </fd:field>
        <fd:field id="name" required="false">
            <fd:label>
                <i18n:text 
i18n:catalogue="inventory">materialType.name.label</i18n:text>
            </fd:label>
            <fd:hint>
                <i18n:text 
i18n:catalogue="inventory">materialType.name.hint</i18n:text>
            </fd:hint>
            <fd:help>
                <i18n:text 
i18n:catalogue="inventory">materialType.name.help</i18n:text>
            </fd:help>
            <fd:datatype base="string">
                <fd:validation>
                    <fd:length max='50'>
                        <fd:failmessage>
                            <i18n:text 
i18n:catalogue="inventory">materialType.name.failmessage</i18n:text>
                        </fd:failmessage>
                    </fd:length>
                </fd:validation>
            </fd:datatype>
        </fd:field>
        <fd:field id="description" required="true">
            <fd:label>
                <i18n:text 
i18n:catalogue="inventory">materialType.description.label</i18n:text>
            </fd:label>
            <fd:hint>
                <i18n:text 
i18n:catalogue="inventory">materialType.description.hint</i18n:text>
            </fd:hint>
            <fd:help>
                <i18n:text 
i18n:catalogue="inventory">materialType.description.help</i18n:text>
            </fd:help>
            <fd:datatype base="string">
                <fd:validation>
                    <fd:length max='50'>
                        <fd:failmessage>
                            <i18n:text 
i18n:catalogue="inventory">materialType.description.failmessage</i18n:text>
                        </fd:failmessage>
                    </fd:length>
                </fd:validation>
            </fd:datatype>
        </fd:field>
        <fd:field id="documentSeqName" required="true">
            <fd:label>
                <i18n:text 
i18n:catalogue="inventory">materialType.documentSeqName.label</i18n:text>
            </fd:label>
            <fd:hint>
                <i18n:text 
i18n:catalogue="inventory">materialType.documentSeqName.hint</i18n:text>
            </fd:hint>
            <fd:help>
                <i18n:text 
i18n:catalogue="inventory">materialType.documentSeqName.help</i18n:text>
            </fd:help>
            <fd:datatype base="string"/>
            <fd:selection-list type="flow-jxpath-wprompt" list-path="documentSequence" 
value-path="name"
                label-path="concat(name,' - ',description)" 
msg-key="selection.prompt"/>
        </fd:field>

        <!-- Configuration -->
        <fd:booleanfield id="active" required="true">
            <fd:label>
                <i18n:text 
i18n:catalogue="inventory">materialType.active.label</i18n:text>
            </fd:label>
            <fd:hint>
                <i18n:text 
i18n:catalogue="inventory">materialType.active.hint</i18n:text>
            </fd:hint>
            <fd:help>
                <i18n:text 
i18n:catalogue="inventory">materialType.active.help</i18n:text>
            </fd:help>
        </fd:booleanfield>


        <!-- MM Defaulting rules -->
        <fd:field id="materialGroup" required="false">
            <fd:label>
                <i18n:text 
i18n:catalogue="inventory">materialType.materialGroup.label</i18n:text>
            </fd:label>
            <fd:hint>
                <i18n:text 
i18n:catalogue="inventory">materialType.materialGroup.hint</i18n:text>
            </fd:hint>
            <fd:help>
                <i18n:text 
i18n:catalogue="inventory">materialType.materialGroup.help</i18n:text>
            </fd:help>
            <fd:datatype base="long"/>
            <fd:selection-list type="flow-jxpath-wprompt" list-path="materialGroup" 
value-path="id"
                label-path="concat(name,' - ',description)" 
msg-key="selection.prompt"/>
        </fd:field>

        <fd:booleanfield id="sellable" required="false">
            <fd:label>
                <i18n:text 
i18n:catalogue="inventory">materialType.sellable.label</i18n:text>
            </fd:label>
            <fd:hint>
                <i18n:text 
i18n:catalogue="inventory">materialType.sellable.hint</i18n:text>
            </fd:hint>
            <fd:help>
                <i18n:text 
i18n:catalogue="inventory">materialType.sellable.help</i18n:text>
            </fd:help>
        </fd:booleanfield>

        <fd:booleanfield id="serialized" required="false">
            <fd:label>
                <i18n:text 
i18n:catalogue="inventory">materialType.serialized.label</i18n:text>
            </fd:label>
            <fd:hint>
                <i18n:text 
i18n:catalogue="inventory">materialType.serialized.hint</i18n:text>
            </fd:hint>
            <fd:help>
                <i18n:text 
i18n:catalogue="inventory">materialType.serialized.help</i18n:text>
            </fd:help>
        </fd:booleanfield>

        <fd:booleanfield id="vmiMaterial" required="false">
            <fd:label>
                <i18n:text 
i18n:catalogue="inventory">materialType.vmiMaterial.label</i18n:text>
            </fd:label>
            <fd:hint>
                <i18n:text 
i18n:catalogue="inventory">materialType.vmiMaterial.hint</i18n:text>
            </fd:hint>
            <fd:help>
                <i18n:text 
i18n:catalogue="inventory">materialType.vmiMaterial.help</i18n:text>
            </fd:help>
        </fd:booleanfield>

        <!-- Pricing Defaulting Rules -->
        <fd:booleanfield id="discountAllowed" required="false">
            <fd:label>
                <i18n:text 
i18n:catalogue="inventory">materialType.discountAllowed.label</i18n:text>
            </fd:label>
            <fd:hint>
                <i18n:text 
i18n:catalogue="inventory">materialType.discountAllowed.hint</i18n:text>
            </fd:hint>
            <fd:help>
                <i18n:text 
i18n:catalogue="inventory">materialType.discountAllowed.help</i18n:text>
            </fd:help>
        </fd:booleanfield>

        <fd:booleanfield id="taxable" required="false">
            <fd:label>
                <i18n:text 
i18n:catalogue="inventory">materialType.taxable.label</i18n:text>
            </fd:label>
            <fd:hint>
                <i18n:text 
i18n:catalogue="inventory">materialType.taxable.hint</i18n:text>
            </fd:hint>
            <fd:help>
                <i18n:text 
i18n:catalogue="inventory">materialType.taxable.help</i18n:text>
            </fd:help>
        </fd:booleanfield>

        <fd:field id="pricingCurrency" required="false">
            <fd:label>
                <i18n:text 
i18n:catalogue="inventory">materialType.pricingCurrency.label</i18n:text>
            </fd:label>
            <fd:hint>
                <i18n:text 
i18n:catalogue="inventory">materialType.pricingCurrency.hint</i18n:text>
            </fd:hint>
            <fd:help>
                <i18n:text 
i18n:catalogue="inventory">materialType.pricingCurrency.help</i18n:text>
            </fd:help>
            <fd:datatype base="long"/>
            <fd:selection-list type="flow-jxpath-wprompt" list-path="currencyMeasure" 
value-path="id"
                label-path="concat(name,' - ',description)" 
msg-key="selection.prompt"/>
        </fd:field>

        <!-- Storage & Shipping Defaulting rules -->
        <fd:field id="packingQty" required="false">
            <fd:label>
                <i18n:text 
i18n:catalogue="inventory">materialType.packingQty.label</i18n:text>
            </fd:label>
            <fd:hint>
                <i18n:text 
i18n:catalogue="inventory">materialType.packingQty.hint</i18n:text>
            </fd:hint>
            <fd:help>
                <i18n:text 
i18n:catalogue="inventory">materialType.packingQty.help</i18n:text>
            </fd:help>
            <fd:datatype base="long">
                <fd:validation>
                    <fd:range min='1'>
                        <fd:failmessage>
                            <i18n:text 
i18n:catalogue="inventory">materialType.packingQty.failmessage</i18n:text>
                        </fd:failmessage>
                    </fd:range>
                </fd:validation>
            </fd:datatype>
        </fd:field>

        <fd:field id="packingQtyUOM" required="false">
            <fd:label>
                <i18n:text 
i18n:catalogue="inventory">materialType.packingQtyUOM.label</i18n:text>
            </fd:label>
            <fd:hint>
                <i18n:text 
i18n:catalogue="inventory">materialType.packingQtyUOM.hint</i18n:text>
            </fd:hint>
            <fd:help>
                <i18n:text 
i18n:catalogue="inventory">materialType.packingQtyUOM.help</i18n:text>
            </fd:help>
             <fd:datatype base="long">
            </fd:datatype>
            <fd:selection-list type="flow-jxpath-wprompt" list-path="stockMeasure" 
value-path="id"
                label-path="concat(name,' - ',description)" 
msg-key="selection.prompt"/>
        </fd:field>

        <fd:field id="freightGroup" required="false">
            <fd:label>
                 <i18n:text 
i18n:catalogue="inventory">materialType.freightGroup.label</i18n:text>
             </fd:label>
             <fd:hint>
                 <i18n:text 
i18n:catalogue="inventory">materialType.freightGroup.hint</i18n:text>
             </fd:hint>
             <fd:help>
                 <i18n:text 
i18n:catalogue="inventory">materialType.freightGroup.help</i18n:text>
             </fd:help>
            <fd:datatype base="long"/>
            <fd:selection-list type="flow-jxpath-wprompt" list-path="freightGroup" 
value-path="id"
                label-path="concat(name,' - ',description)" 
msg-key="selection.prompt"/>
         </fd:field>

        <!-- Sales Defaulting rules -->
        <fd:field id="minOrderQty" required="false">
            <fd:label>
                  <i18n:text 
i18n:catalogue="inventory">materialType.minOrderQty.label</i18n:text>
              </fd:label>
              <fd:hint>
                  <i18n:text 
i18n:catalogue="inventory">materialType.minOrderQty.hint</i18n:text>
              </fd:hint>
              <fd:help>
                  <i18n:text 
i18n:catalogue="inventory">materialType.minOrderQty.help</i18n:text>
              </fd:help>
             <fd:datatype base="long"/>
        </fd:field>

        <fd:field id="minOrderQtyUOM" required="false">
            <fd:label>
                   <i18n:text 
i18n:catalogue="inventory">materialType.minOrderQtyUOM.label</i18n:text>
               </fd:label>
               <fd:hint>
                   <i18n:text 
i18n:catalogue="inventory">materialType.minOrderQtyUOM.hint</i18n:text>
               </fd:hint>
               <fd:help>
                   <i18n:text 
i18n:catalogue="inventory">materialType.minOrderQtyUOM.help</i18n:text>
               </fd:help>
              <fd:datatype base="long"/>
             <fd:selection-list type="flow-jxpath-wprompt" list-path="stockMeasure" 
value-path="id"
                label-path="concat(name,' - ',description)" 
msg-key="selection.prompt"/>
        </fd:field>

        <!-- Configuration -->
        <fd:booleanfield id="configurable" required="false">
            <fd:label>
                    <i18n:text 
i18n:catalogue="inventory">materialType.configurable.label</i18n:text>
                </fd:label>
                <fd:hint>
                    <i18n:text 
i18n:catalogue="inventory">materialType.configurable.hint</i18n:text>
                </fd:hint>
                <fd:help>
                    <i18n:text 
i18n:catalogue="inventory">materialType.configurable.help</i18n:text>
                </fd:help>
          </fd:booleanfield>

        <!-- Messages -->
        <fd:output id="message">
            <fd:datatype base="string"/>
        </fd:output>

        <fd:action id="open" action-command="open" validate="false">
            <fd:label><i18n:text>button.open.label</i18n:text></fd:label>
            <fd:help><i18n:text>button.open.help</i18n:text></fd:help>
            <fd:hint><i18n:text>button.open.hint</i18n:text></fd:hint>
            <fd:on-action>
                <javascript>
                   <![CDATA[
                   var name = cocoon.request.get("name");
                   var msg = event.source.parent.getWidget("message");
                   try {
                       bean = sproxy.readMaterialType(myForm.locale,name);
                       var args = [name];
                       var i18nVal = 
Packages.org.apache.cocoon.components.messages.MessageHandler.getMessage
                       
(inventoryMessages,myForm.locale,"materialType.message.open",args);
                       msg.value = i18nVal;
                       myForm.load(bean);
                       dispatch="update";
                   }catch(ex) {
                       if(ex instanceof 
Packages.com.company.zeus.service.system.exceptions.BaseAppException) {
                           var i18nVal = 
Packages.org.apache.cocoon.components.messages.ExceptionHandler.
                           getWebExceptionMessage(inventoryMessages,myForm.locale,ex);
                           msg.value = i18nVal;
                       } else {
                           throw ex;
                       }
                   }
                   ]]>
                </javascript>
            </fd:on-action>
        </fd:action>
        <fd:action id="new" action-command="new" validate="false">
            <fd:label><i18n:text>button.new.label</i18n:text></fd:label>
            <fd:help><i18n:text>button.new.help</i18n:text></fd:help>
            <fd:hint><i18n:text>button.new.hint</i18n:text></fd:hint>
            <fd:on-action>
                <javascript>
                    <![CDATA[
                    dispatch="create";
                    bean = new 
Packages.com.company.zeus.domain.inventory.material.MaterialTypeView();
                    myForm.load(bean);
                    var msg = event.source.parent.getWidget("message");
                    var i18nVal = 
Packages.org.apache.cocoon.components.messages.MessageHandler.getMessage
                    (inventoryMessages,myForm.locale,"materialType.message.new");
                    msg.value = i18nVal;
                    ]]>
                </javascript>
            </fd:on-action>
       </fd:action>
       <fd:action id="delete" action-command="delete" validate="false">
             <fd:label><i18n:text>button.delete.label</i18n:text></fd:label>
             <fd:help><i18n:text>button.delete.help</i18n:text></fd:help>
             <fd:hint><i18n:text>button.delete.hint</i18n:text></fd:hint>
             <fd:on-action>
                 <javascript>
                     <![CDATA[
                     var name = cocoon.request.get("name");
                     var msg = event.source.parent.getWidget("message");
                     try {
                         sproxy.deleteMaterialType(myForm.locale,name);
                         var args = [name];
                         var i18nVal = 
Packages.org.apache.cocoon.components.messages.MessageHandler.getMessage
                         
(inventoryMessages,myForm.locale,"materialType.message.delete",args);
                         msg.value = i18nVal;
                         //Reset form
                         bean = new 
Packages.com.company.zeus.domain.inventory.material.MaterialTypeView();
                         myForm.load(bean);
                         dispatch="update";
                     }catch(ex) {
                         if(ex instanceof 
Packages.com.company.zeus.service.system.exceptions.BaseAppException) {
                             var args = [name];
                             var i18nVal = 
Packages.org.apache.cocoon.components.messages.ExceptionHandler.
                             
getWebExceptionMessage(inventoryMessages,myForm.locale,ex);
                             msg.value = i18nVal;
                         } else {
                             throw ex;
                         }
                     }
                     ]]>
                 </javascript>
             </fd:on-action>
        </fd:action>
        <fd:submit id="save" action-command="save" validate="true">
              <fd:label><i18n:text>button.save.label</i18n:text></fd:label>
              <fd:help><i18n:text>button.save.help</i18n:text></fd:help>
              <fd:hint><i18n:text>button.save.hint</i18n:text></fd:hint>
          </fd:submit>
          <fd:submit id="close" action-command="close" validate="false">
              <fd:label><i18n:text>button.close.label</i18n:text></fd:label>
              <fd:help><i18n:text>button.close.help</i18n:text></fd:help>
              <fd:hint><i18n:text>button.close.hint</i18n:text></fd:hint>
          </fd:submit>
          <fd:submit id="cancel" action-command="cancel" validate="false">
              <fd:label><i18n:text>button.cancel.label</i18n:text></fd:label>
              <fd:help><i18n:text>button.cancel.help</i18n:text></fd:help>
              <fd:hint><i18n:text>button.cancel.hint</i18n:text></fd:hint>
           </fd:submit>
    </fd:widgets>

</fd:form>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to