Look at the "How client ids are generated" section here:

http://tapestry.apache.org/tapestry4.1/ajax/basics.html

It's all covered in excruciating detail.   The gist of it is that you do
this:

public void renderSomething(){
  super.renderIdAttribute(writer, cycle);
}

and everything else gets handled for you.

On 7/25/07, #Cyrille37# <[EMAIL PROTECTED]> wrote:

Igor Drobiazko a écrit :
> Well, your component looks somehow strange to me. I don't see what it
> should
> do.
> However id="checkbox" is written when your contained checkbox is
> rendered.
> That's expected behavior. Your own component does nothing except
> registering
> to the group. So why do you expect id="ckL1"?
Because it will do something soon ... :-)
Perhaps it is not a good practice to force the clientId for a component.

Thanks for your time !
cyrille
>
> On 7/25/07, #Cyrille37# <[EMAIL PROTECTED]> wrote:
>>
>> Igor Drobiazko a écrit :
>> > It is inpossible to help you without having a look into your
>> > GroupableCheckbox.java and GroupableCheckbox.html
>> > Please post it.
>> Ha! That's another story, a more complex problem ;-)
>> After relearned Ids concept, I can talk to you about the component
>> GroupableCheckbox which I try to construct.
>>
>> The rendered version of the concept/need is looking like (where "x" are
>> checkboxes) :
>> x List1
>>    x List1Choice1
>>    x List1Choice2
>>   x List2
>>    x List2Choice1
>>    x List2Choice2
>> With those constraints :
>> 1/ you can select list's choices only in the selected list. eg: is
List1
>> is selected you can choice List1Choice1 or List1Choice2 but not
>> List2Choice1 or List2Choice2
>> 2/ The validation must be done on the client-side *without* any
>> communication with the server, but the validation has to exist on the
>> server to check validity at form's submit.
>> 3/ I do not want to have encapsulation of component html tags like the
>> CheckboxGroup component do. This constraint is to let free html
>> designer.
>>
>> I've not yet many sources to show because I've to learning and find
many
>> stuff to complete this 3 constraints. At first I've to verify that the
>> third constraint is possible ...
>> For da moment I've got :
>>
>> ========================
>> TestGroupableCheckbox.html :
>>
>> <form jwcid="[EMAIL PROTECTED]" clientValidationEnabled="true" >
>>
>>     L1     <input id="ckL1" jwcid="[EMAIL PROTECTED]/GroupableCheckbox"
>> value="L1" /> <br/>
>>
>>     L1C1    <input id="ckL1C1" jwcid="[EMAIL PROTECTED]/GroupableCheckbox"
>> value="0" group="component:ckL1" />
>>     L1C2    <input id="ckL1C2" jwcid="[EMAIL PROTECTED]/GroupableCheckbox"
>> value="ognl:null" group="component:ckL1" />
>>     L1C3    <input id="ckL1C3" jwcid="[EMAIL PROTECTED]/GroupableCheckbox"
>> group="component:ckL1" />
>> </form>
>>
>> ========================
>> GroupableCheckbox.html :
>>
>> <span jwcid="$content$">
>>     <span jwcid="checkbox"/>
>> </span>
>>
>> ========================
>> GroupableCheckbox.jwc :
>>
>> <!DOCTYPE component-specification
>>       PUBLIC "-//Apache Software Foundation//Tapestry Specification 4.0
>> //EN"
>>       "http://tapestry.apache.org/dtd/Tapestry_4_0.dtd";>
>>
>> <component-specification
>>     class="web.components.mycomps.GroupableCheckbox"
>>     allow-body="no"
>>     allow-informal-parameters="yes" >
>>
>>     <description>
>>         A checkbox whose state may be controlled/validated by an other
>> checkbox which acting as a checkbox group controler.
>>     </description>
>>
>>     <parameter name="id" required="no"/>
>>     <parameter name="value" required="no" default-value="null"/>
>>     <parameter name="disabled" required="no"/>
>>
>>     <parameter name="group" required="yes">
>>         <description>
>>             Specifies the GroupableCheckbox this component belongs to.
>>         </description>
>>     </parameter>
>>
>>     <component id="checkbox" type="Checkbox"
>> inherit-informal-parameters="yes">
>>         <inherited-binding name="id" parameter-name="id"/>
>>         <inherited-binding name="name" parameter-name="id"/>
>>         <inherited-binding name="value" parameter-name="value"/>
>>         <inherited-binding name="disabled" parameter-name="disabled"/>
>>     </component>
>>
>>     <property name="subCheckboxesId" initial-value="new
>> java.util.ArrayList()"/>
>>
>> </component-specification>
>>
>> ========================
>> And the UGLY java file. I'm just at the time of tracing all calls to
>> learn more on cycle...
>> GroupableCheckbox.java :
>>
>> public abstract class GroupableCheckbox extends BaseComponent
>> {
>> public abstract Object getGroup();
>> public abstract Collection getSubCheckboxesId() ;
>> public void registerSubCheckbox( GroupableCheckbox groupableCheckbox)
>> {
>>   getSubCheckboxesId().add( groupableCheckbox );
>> }
>> protected void renderComponent( IMarkupWriter writer, IRequestCycle
>> cycle
>> )
>> {
>>         log.info( "*** renderComponent()" );
>>         log.info( "getBoundId: "+this.getBoundId() );
>>         log.info( "id: "+this.getId()+", clientId:
>> "+this.getClientId()+", specifiedId: "+this.getSpecifiedId() );
>>         log.info( "getIdPath: "+this.getIdPath() + ", getExtendedId:
>> "+this.getExtendedId() );
>>         Object group = this.getGroup();
>>         log.info( "group: "+group );
>>         if( group != null )
>>         {
>>             ((GroupableCheckbox)group).registerSubCheckbox( this );
>>         }
>>         super.renderComponent( writer, cycle );
>>     }
>>     ...
>>     ... Overrided methods with log.info("methodName")
>>     ...
>> }
>>
>>
>



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




--
Jesse Kuhnert
Tapestry/Dojo team member/developer

Open source based consulting work centered around
dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com

Reply via email to