Martin Marinschek wrote:
I was already wondering myself. It would fit better in the component,
if there is one.

Manfred?

@Rich: Can you do a patch - would be great.

On closer inspection I think I see why it is in the tag class rather than the component itself. It uses the UIComponentTag.isValueReference() to determine if the value attribute is a value binding or not. I think that should be fine where it is, so just adding a setProperty(String) method and creating a value binding from that will work. I tested it in my own app by subclassing UpdateActionListener and adding the method. Works as it should. Attached is a patch of UpdateActionListener and UpdateActionListenerTag to add the setProperty(String) method and create the value binding and in the tag class to just pass along the string value to the component rather than create the value binding there. I'm open to comments/criticisms.

Rich
regards,

Martin

On 4/19/06, Richard Wallace <[EMAIL PROTECTED]> wrote:
I'm trying to make use of the Tomahawk updateActionListener action
listener in a Shale Clay based app and was having problems getting it to
work properly.  After doing some debugging I realized that the problem
was that I was trying to map to the property "property" on the
UpdateActionListener class thinking that the tag "property" attribute
just passed the value through.

On closer inspection I realized this isn't the case and that the
UpdateActionListenerTag itself takes the value set for the "property"
attribute and creates a value binding which is passed to the
UpdateActionListener with the setPropertyBinding() method.  Similarly,
the UpdateActionListenerTag also figures out if the "value" attribute is
supposed to be an actual value object or a value binding.

I searched this list and this was also a problem when trying to
integrate with Facelets.  So my question is why is all this work done in
the UpdateActionListenerTag class instead of in the UpdateActionListener
class itself?  Then the tag class would just pass the values through
like all the other tags in JSF.

Rich



--

http://www.irian.at

Your JSF powerhouse -
JSF Consulting, Development and
Courses in English and German

Professional Support for Apache MyFaces

Index: src/main/java/org/apache/myfaces/custom/updateactionlistener/UpdateActionListenerTag.java
===================================================================
--- src/main/java/org/apache/myfaces/custom/updateactionlistener/UpdateActionListenerTag.java	(revision 395279)
+++ src/main/java/org/apache/myfaces/custom/updateactionlistener/UpdateActionListenerTag.java	(working copy)
@@ -79,7 +79,7 @@
                 FacesContext facesContext = FacesContext.getCurrentInstance();
                 Application application = facesContext.getApplication();
                 UpdateActionListener al = new UpdateActionListener();
-                al.setPropertyBinding(application.createValueBinding(_property));
+                al.setProperty(_property);
                 if (UIComponentTag.isValueReference(_value))
                 {
                     al.setValueBinding(application.createValueBinding(_value));
Index: src/main/java/org/apache/myfaces/custom/updateactionlistener/UpdateActionListener.java
===================================================================
--- src/main/java/org/apache/myfaces/custom/updateactionlistener/UpdateActionListener.java	(revision 395279)
+++ src/main/java/org/apache/myfaces/custom/updateactionlistener/UpdateActionListener.java	(working copy)
@@ -68,6 +68,11 @@
     private ValueBinding _valueBinding;
     private Converter _converter;
 
+    public void setProperty (String property) {
+        setPropertyBinding (FacesContext.getCurrentInstance ().getApplication ().createValueBinding (property));
+    }    
+
+
     public void setPropertyBinding(ValueBinding propertyBinding)
     {
         _propertyBinding = propertyBinding;

Reply via email to