List Info

Thread: "rendered" condition does not work as expected




"rendered" condition does not work as expected
user name
2006-07-31 16:42:31
My code inside a "rendered" flag is getting
invoked even when the condition
is false. I am iterating over a list of Graphics objects to
display
information about each by calling the object specific
methods. The code
works fine if I use only <h:outputText>. If I use
<h:inputText> however, the
rendered property does not seem to be taking effect.

<ui:repeat var="graphicsObj"
value="#{gfx.graphicsObjList}">

    <h:panelGroup rendered="#{graphicsObj.objType
== 'circle'}" >
        [Circle] Radius: <h:outputText
value="#{graphicsObj.radius}"/>
    </h:panelGroup>

    <h:panelGroup rendered="#{graphicsObj.objType
== 'rectangle'}" >
        [Rectangle] Length: <h:outputText
value="#{graphicsObj.length}"/>
    </h:panelGroup>

</ui:repeat>

The above works fine, as expected. However, if I change from
<h:outputText>
to <h:inputText>, it complains :

javax.faces.el.PropertyNotFoundException: /graphics.xhtml
24,54
value="#{graphicsObj.radius}": Bean: Rectangle,
property: radius

So, the first block of code is getting executed for a
Rectangle object when
using a <h:inputText> but not when using
<h:outputText>. 

Any help in solving the problem is appreciated. The code for
the Circle and
Rectangle beans is given below:

public class Circle implements Serializable
{
    public String getObjType() {
        return "circle";
    }

    int radius;
    public void setRadius(int radius) {
        this.radius = radius;
    }
    public int getRadius() {
        return this.radius;
    }
}

public class Rectangle implements Serializable
{
    public String getObjType() {
        return "rectangle";
    }

    private int length;
    public void setLength(int length) {
        this.length = length;
    }
    public int getLength() {
        return this.length;
    }
}

[1]

about | contact  Other archives ( Real Estate discussion Medical topics )