You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by José Luis Cetina <ma...@gmail.com> on 2012/07/05 18:49:09 UTC

Re: Custom tag

Hi leonardo, this example works:

You can try the alternate syntax using "targets". For example:

<composite:interface>
    <composite:attribute name="action" targets="testComponent"/>
</composite:interface>
<composite:implementation>
    <h:commandButton id="testComponent" value="Press Me"/>
</composite:implementation>

but what about whit this:

<composite:interface>
    <composite:attribute name="action" targets="testComponent"/>
    <composite:attribute name="action2" targets="testComponent2"/>
</composite:interface>
<composite:implementation>
    <h:commandButton id="testComponent" value="Press Me"/>
    <h:commandButton id="testComponent2" value="Press Me 2"/>
</composite:implementation>

Im triying to use the the action attribute

<mycomp:test
   action="#{bean.myaction}"
   action2="#{bean.myaction2}">
</mycomp:test>

this doesnt work (myaction2 never been invoke) i guess because the
name of attribute is action2 an not action, but i already use action
attribute for my first button, how can i resolve this?

I want to have 2 buttons in my composite component, then my 2 buttons
can have action method (using the attributes).

Thanks



2012/6/29 Rafael Pestano <rm...@yahoo.com.br>:
> you're welcome. Leonardo's approach is the solution, what i proposed was more like a workaround ;)
>
>
>
>
> Att,
>
> Rafael M. Pestano
>
> Desenvolvedor Java Cia. de Processamento de Dados do Rio Grande do Sul
> Graduando em Ciência da Computação UFRGS
> http://code.google.com/p/jsf-conventions-framework/
> http://rpestano.wordpress.com
> http://twitter.com/realpestano
>
>
>
> ________________________________
> De: José Luis Cetina <ma...@gmail.com>
> Para: MyFaces Discussion <us...@myfaces.apache.org>
> Enviadas: Sexta-feira, 29 de Junho de 2012 12:02
> Assunto: Re: Custom tag
>
> Thanks Rafael and Leonardo.
>
> Its very easy with target, this solution is best in my opinion.
>
> Works.
>
> Thanks again
>
> 2012/6/29 Leonardo Uribe <lu...@gmail.com>:
>> Hi
>>
>> You can try the alternate syntax using "targets". For example:
>>
>> <composite:interface>
>>    <composite:attribute name="action" targets="testComponent"/>
>> </composite:interface>
>> <composite:implementation>
>>    <h:commandButton id="testComponent" value="Press Me"/>
>> </composite:implementation>
>>
>> Instead use EL, you can use the id hierarchy to locate the component.
>> In this case, there will not be NullPointerException, because only if
>> the property is set, the value is assigned. I have tested both syntax
>> in MyFaces with tons of tests:
>>
>> http://svn.apache.org/repos/asf/myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/
>>
>> and it works without problem.
>>
>> regards,
>>
>> Leonardo Uribe
>>
>> 2012/6/29 Rafael Pestano <rm...@yahoo.com.br>:
>>> again,
>>>
>>> <cc:implementation>
>>>
>>>     <h:commandButton
>>>                 value="Ok" rendered="#{not empty cc.attrs.action and empty cc.attrs.actionListener}"
>>>                 action="#{cc.attrs.action}"
>>>     />
>>>
>>>
>>>   <h:commandButton
>>>                 value="Ok" rendered="#{not empty cc.attrs.actionListener and empty cc.attrs.action}"
>>>                 actionListener="#{cc.attrs.actionListener}"
>>>     />
>>>
>>>   <h:commandButton
>>>                 value="Ok" rendered="#{not empty cc.attrs.actionListener and not empty cc.attrs.action}"
>>>                 actionListener="#{cc.attrs.actionListener}"
>>>                  action="#{cc.attrs.action}"
>>>     />
>>>
>>> </cc:implementation>
>>>
>>>
>>> Att,
>>> Rafael M. Pestano
>>> Desenvolvedor Java Cia. de Processamento de Dados do Rio Grande do Sul
>>> Graduando em Ciência da Computação UFRGS
>>> http://code.google.com/p/jsf-conventions-framework/
>>> http://rpestano.wordpress.com
>>> http://twitter.com/realpestano
>>>
>>>
>>>
>>> ----- Mensagem original -----
>>> De: Rafael Pestano <rm...@yahoo.com.br>
>>> Para: MyFaces Discussion <us...@myfaces.apache.org>
>>> Cc:
>>> Enviadas: Quinta-feira, 28 de Junho de 2012 23:12
>>> Assunto: Re: Custom tag
>>>
>>> you can try:
>>>
>>> <cc:implementation>
>>>
>>>     <h:commandButton
>>>                 value="Ok" rendered="#{not empty cc.attrs.action and empty cc.attrs.actionListener}"
>>>                 action="#{cc.attrs.action}"
>>>     />
>>>
>>>
>>>   <h:commandButton
>>>                 value="Ok" rendered="#{not empty cc.attrs.actionListener and empty cc.attrs.action}"
>>>                 actionListener="#{cc.attrs.actionListener}"
>>>                 action="#{cc.attrs.action}"
>>>     />
>>>
>>>   <h:commandButton
>>>                 value="Ok" rendered="#{not empty cc.attrs.actionListener and not empty cc.attrs.action}"
>>>                 actionListener="#{cc.attrs.actionListener}"
>>>     />
>>>
>>> </cc:implementation>
>>>
>>>
>>>
>>> maybe it helps.
>>>
>>> Att,
>>>
>>> Rafael M. Pestano
>>>
>>> Desenvolvedor Java Cia. de Processamento de Dados do Rio Grande do Sul
>>> Graduando em Ciência da Computação UFRGS
>>> http://code.google.com/p/jsf-conventions-framework/
>>> http://rpestano.wordpress.com
>>> http://twitter.com/realpestano
>>>
>>>
>>>
>>> ________________________________
>>> De: José Luis Cetina <ma...@gmail.com>
>>> Para: MyFaces Discussion <us...@myfaces.apache.org>
>>> Enviadas: Quinta-feira, 28 de Junho de 2012 18:28
>>> Assunto: Custom tag
>>>
>>> Hi i have this:
>>>
>>> Simple custom tag:
>>>
>>> <cc: interface componentType="my_button" >
>>>   <cc:attribute name="action" method-signature="java.lang.String action()"/>
>>>   <cc:attribute name="actionListener" method-signature="void
>>> actionListener(javax.faces.event.ActionEvent event)"/>
>>> </ cc:interface>
>>>
>>> <cc:implementation>
>>>     <h:commandButton
>>>                 value="Ok"
>>>                 action="#{cc.attrs.action}"
>>>                 actionListener="#{cc.attrs.actionListener}"
>>>      />
>>> </cc:implementation>
>>>
>>> Then in my page i do:
>>>
>>> <mytags:mybutton action="#{myBean.actionMethod}"/>
>>>
>>> But i get a NullPointerException, this is because im not setting the
>>> actionListener attribute, but the thing is that sometimes i need or
>>> only action or actionlistener not both, but i have to provided both if
>>> not i get the nullpointer.
>>>
>>>
>>> I have to do this, but the listener method is empty in my managedbean,
>>> i only do this for avoid the nullpointer.
>>> <mytags:mybutton action="#{myBean.actionMethod}"
>>> actionListener="#{myBean.actionListenerMethod}"/>
>>>
>>> how can i avoid this?
>>>
>>> Thanks
>>>
>>> -------------------------------------------------------------------
>>> SCJA. José Luis Cetina
>>> -------------------------------------------------------------------
>>>
>
>
>
> --
> -------------------------------------------------------------------
> SCJA. José Luis Cetina
> -------------------------------------------------------------------



-- 
-------------------------------------------------------------------
SCJA. José Luis Cetina
-------------------------------------------------------------------