It is in tapestry.js ? I was looking for it because for me (5.0.11) it
wasn't dynamicall setting the hidden value upon click on the checkbox.

<html t:type="website/selfhelp/Layout"
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd";>

<style>
div.w-label, div.w-tlabel {
 width: 135px;
 float: left;
}
div.w-tlabel {
 position: relative;
 top: 7px;
}
div.w-row {
 margin-bottom: 5px;
}
</style>

<div class="w-title">Create New Block</div>

<t:form t:id="addBlock" clientValidation="false">

<div class="border">
<div class="borderSpacer">

<t:errors/>

<div class="w-row">
<div class="w-tlabel">Image:</div>
<input t:id="image" type="text" t:type="textfield"
t:value="block.imgSrc" t:validate="required"/>
</div>

<div class="w-row">
<div class="w-tlabel">Name:</div>
<input t:id="name" type="text" t:type="textfield" t:value="block.note"
t:validate="required"/>
</div>
<p/>
<div class="w-row">
<div class="w-label">Advanced Options:</div>
<input t:id="advancedCheck" type="checkbox" t:type="checkbox"
t:mixins="triggerfragment" t:fragment="advancedSection"
value="advanced"/>
</div>

<t:formfragment t:id="advancedSection" t:visible="advanced">

<div class="w-row">
<div class="w-tlabel">Image ID:</div>
<input t:id="imageId" type="text" t:type="textfield" t:value="block.imgId"/>
</div>

<div class="w-row">
<div class="w-tlabel">Image Name:</div>
<input t:id="imageName" type="text" t:type="textfield" t:value="block.imgName"/>
</div>

<div class="w-row">
<div class="w-tlabel">Image Text:</div>
<input t:id="imageText" type="text" t:type="textfield" t:value="block.imgAlt"/>
</div>

<div class="w-row">
<div class="w-tlabel">Image CSS Class:</div>
<input t:id="imageCssClass" type="text" t:type="textfield"
t:value="block.imgClass"/>
</div>

<div class="w-row">
<div class="w-tlabel">Image Width:</div>
<input t:id="imageWidth" type="text" t:type="textfield"
t:value="block.imgWidth" size="5" t:validate="required,min=50"/>
</div>

<div class="w-row">
<div class="w-tlabel">Image Height:</div>
<input t:id="imageHeight" type="text" t:type="textfield"
t:value="block.imgHeight" size="5" t:validate="required,min=15"/>
</div>

</t:formfragment>
<p/>
<div style="float:left;margin-right:10px;">
 <input t:id="submitButton"
onclick="setupFragment('advancedSection','advancedCheck');"
type="submit" t:type="submit" value="Submit"/>
</div>
 <input t:id="resetButton" type="submit" t:type="submit" value="Reset"/>

 </div>
 </div>

</t:form>
</html>

package com.kkamerica.workbench.pages.website.selfhelp;

import org.apache.tapestry.Asset;
import org.apache.tapestry.PageRenderSupport;
import org.apache.tapestry.annotations.BeginRender;
import org.apache.tapestry.annotations.Component;
import org.apache.tapestry.annotations.Environmental;
import org.apache.tapestry.annotations.OnEvent;
import org.apache.tapestry.annotations.Path;
import org.apache.tapestry.annotations.Persist;
import org.apache.tapestry.annotations.Service;
import org.apache.tapestry.corelib.components.Form;
import org.apache.tapestry.ioc.annotations.Inject;
import org.slf4j.Logger;
import org.zimowski.azdao.wrapper.DaoVoidResult;

import com.kkamerica.workbench.apps.website.selfhelp.beans.SelfHelpBlockBean;
import com.kkamerica.workbench.apps.website.selfhelp.dao.SelfHelpBlockDao;

public class AddBlock {

        @Inject
        private Logger _log;
        
        @Inject
        @Path("context:js/formutils.js")
        private Asset _formUtilsJs;
        
        @Environmental
        private PageRenderSupport _pageRenderSupport;
        
        @Inject
        @Service("selfHelpBlockDao")
        private SelfHelpBlockDao _selfHelpBlockDao;
        
        @Component(id="addBlock")
        private Form _form;
        
        @Persist
        private SelfHelpBlockBean _block;
        
        @Persist
        private boolean _advanced;
        
        @Persist
        private boolean _visible;

        
        @BeginRender
        void pageSetup() {
                if(_block == null) {
                        _block = new SelfHelpBlockBean();
                }
                _pageRenderSupport.addScriptLink(_formUtilsJs);
        }
        
        @OnEvent("activate")
        void pageActivated() {
                _log.debug(new Integer(_block.hashCode()).toString());
        }
        
        @OnEvent(value="selected",component="resetButton")
        void resetForm() {
                _block = new SelfHelpBlockBean();
                _advanced = false;
                _form.clearErrors();
        }
        
        @OnEvent(value="success",component="submitButton")
        Class createBlock() {
                DaoVoidResult result = _selfHelpBlockDao.add(_block);
                if(!result.isInError()) resetForm();
                return Blocks.class;
        }
        
        public SelfHelpBlockBean getBlock() {
                return _block;
        }

        public boolean isAdvanced() {
                return _advanced;
        }

        public void setAdvanced(boolean aAdvanced) {
                _advanced = aAdvanced;
        }

        public boolean isVisible() {
                return _visible;
        }

        public void setVisible(boolean aVisible) {
                _visible = aVisible;
        }
}

On Sat, Mar 22, 2008 at 2:56 PM, Howard Lewis Ship <[EMAIL PROTECTED]> wrote:
> The code is already in place to set the hidden field to the correct
>  value when the form is submitted.
>
>
>
>  On Sat, Mar 22, 2008 at 11:59 AM, Adam Zimowski <[EMAIL PROTECTED]> wrote:
>  > Per documentation, FormFragment decides if its content should be
>  >  submitted based on the hidden field [formfragmentname]:hidden:
>  >
>  >  // this is the relevant code from FormFragment source: void 
> beginRender(..)
>  >         writer.element("input",
>  >
>  >                        "type", "hidden",
>  >
>  >                        "name", _controlName,
>  >
>  >                        "id", _clientId + ":hidden",
>  >
>  >                        "value", String.valueOf(_visible));
>  >         writer.end();
>  >
>  >
>  >  However, that field being generated at render time is fairly static,
>  >  which defeats the very purpose of dynamic behavior provided by
>  >  Tapestry.ElementEffect sidedown/slideup functions. The problem is that
>  >  when the silide function is invoked on the client (triggered by click
>  >  on the checkbox), that inherently means that FormFragment should be
>  >  submitted, but it won't be if the hidden field was generated with
>  >  false value.
>  >
>  >  The solution to this problem should be Tapestry dynamically changing
>  >  hidden field's value to true/false based on the client side state of
>  >  the checkbox tied to the FormFragment. For those who need a
>  >  workaround, I can share mine. In onclick of submit button one can
>  >  execute the following function:
>  >
>  >  function setupFragment(fragment, checkbox) {
>  >   var checked = document.getElementById(checkbox).value;
>  >   var advanced = (checked == 'on');
>  >   document.getElementById(fragment + ':hidden').value=advanced;
>  >  }
>  >
>  >
>  >  <input t:id="submitButton"
>  >  onclick="setupFragment('advancedFragment','advancedCheckbox');"
>  >  type="submit" t:type="submit" value="Submit"/>
>  >
>  >  I believe this should be one of those "plumbing" tasks that Tapestry
>  >  should do for us. Should this be a JIRA improvement, or am I missing
>  >  something?
>  >
>  >  -adam
>  >
>  >  ---------------------------------------------------------------------
>  >  To unsubscribe, e-mail: [EMAIL PROTECTED]
>  >  For additional commands, e-mail: [EMAIL PROTECTED]
>  >
>  >
>
>
>
>  --
>  Howard M. Lewis Ship
>
>  Creator Apache Tapestry and Apache HiveMind
>
>  ---------------------------------------------------------------------
>  To unsubscribe, e-mail: [EMAIL PROTECTED]
>  For additional commands, e-mail: [EMAIL PROTECTED]
>
>

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

Reply via email to