Dynamic El expression evaluation

Hello,
I have a bean which returns me map of key-value pairs ( String,String) . In my jsff, I need to access the map's value based on key which is a a dynamic El expression
<af:iterator id="i1" value="#{bindings.leaderBoardEntities.collectionModel}"
var="entity" rows="#{bindings.leaderBoardEntities.rangeSize}">
<af:image id="i2" source="#{pageFlowScope.ImagesBean.imageUrlPair[entity.displayName]}"
shortDesc="user info"
inlineStyle="width:50px;height:50px;"/>
</af:iterator>
I am unable to evalue the key for the map.
I tried,
source="#{pageFlowScope.ImagesBean.imageUrlPair[entity.displayName]}
source="#{pageFlowScope.ImagesBean.imageUrlPair['#{entity.displayName}']}
source="#{pageFlowScope.ImagesBean.imageUrlPair['${entity.displayName}']}
source="#{pageFlowScope.ImagesBean.imageUrlPair[#{entity.displayName}]}--this is syntactically wrong
However , this works
source="#{pageFlowScope.ImagesBean.imageUrlPair['Twitter']}
Kindly help me

Hi,
this is because the row does not have a setDisplayName and getDisplayName method. It has setAttribute(int), setAttribute(String) as well as getAttrinute(int), getAttribute(String) methods. So the input you provide is constantly null
Frank

Similar Messages

  • Dynamic boolean expression evaluation

    Hey everyone,
    We have a table that consists of a couple key columns and a column containing a boolean expression. We want to select a number of rows based on the key columns and evaluate the boolean expression in the expression column for each, only returning the first row wherein the boolean expression evaluates to true.
    We are using a context to inject the test variables into the boolean expressions and currently we are selecting all the key rows in a PL/SQL procedure and going through the cursor evaluating each of the boolean expressions with an execute immediate.
    The expressions are currently formated in the columns as anonymous PL/SQL blocks that, when called, will either return true or false to the PL/SQL procedure. Upon returning true, the procedure stops looping and returns true to the caller.
    Psuedo-code would be:
    - set-up sys_context with condition variables
    - create cursor for: select * from expression_tbl et where <key matches>
    - begin loop through cursor
    - execute immediate cursor_row.expression using out :out_is_true
    - if out_is_true = 'Y' then return true
    - loop
    - return false
    The expressions (anonymous PL/SQL blocks) from the table look something like this:
    begin if ((''||sys_context('ctx', '1')||'' = 'FL') AND (''||sys_context('ctx', '3')||'' BETWEEN 1619 AND 4598) ) then :1 := 'Y'; end if; end;
    This works, but it seems like I should be able to do this another way and potentially extract more performance.
    So...a couple questions:
    1) I have read on ask Tom that a dynamic select statement (rather than an anonymous PL/SQL block) can evaulate the boolean expressions. I.E. rather than use an execute immediate clause on an anonymous PL/SQL block contained in the expression column, I would make the expression column compatible with a where clause and create this dynamic SQL query: 'select count(*) from dual where ' || expression. I would then execute that query and if it returns a row then the expression is true, otherwise it is false. My question is, does anyone think the performance of parsing the SQL and executing it would be better than that of executing an anonymous PL/SQL block for every row? Tom said that the SQL could incur a lot of hard-parses and kill performance, but how deathly is the constant compilation of anonymous PL/SQL blocks as shown above in comparison?
    2) Would there be any benefit to pulling the execute routines out of the PL/SQL block and issuing a query such as the following:
    select * from expression_tbl et where <key matches> AND pkg.eval_routine(et.expression) = 'Y' AND rownum <= 1.
    I realize that the evaulating routine would then need to either perform an execute immediate on et.expression (if we keep the current method in place) or formulate the dynamic SQL statement and execute it. But, could this be faster than doing the same loop through rows explicitely in PL/SQL?
    Doing this would trim my PL/SQL down to:
    - set up sys_context
    - execute the above select statmenet
    - if a row is returned then return true otherwise return false
    Seems more elegant, but the peformance is all that matters.
    3) Is there any built-in routine that I may be able to replace pkg.eval_routine from 2 with that would evaulate boolean expressions for me? Or any other way to inline the idea from 1 with 2? I can't think of one given the dynamic nature of the beast, but...maybe there's something I missed.
    Thanks everyone! Hopefully I've expressed myself clearly.

    Brian - According to Tom Kyte Doing PL/SQL inside Execute Immediate should be faster as you are already within the context of a PL/SQL engine. If we choose to do it in SQL then the PL/SQL engine has to hand it over to the SQL Engine for executing the dynamic Select statements and so might be a little slower. But I am not sure if the difference can be quantifiable unless u do your own test of both evaluators and run them for like a few thousand times in a loop.
    If you are using 10g R2 - you might want to look into DBMS_RLMGR package which is the API for the Oracle's version of the embedded business rule manager.
    I looked into it but it didn't fit our needs as its deficient with respect to rule versioning and effective and until date based business rule enforcement/ validation.
    After taking a shot at designing something home grown I feel its not that difficult to construct one that fit our needs inclusive of the features( rule versioning, effective and until dates) that I listed above as deficiencies in the Oracle embedded rule engine.
    If you don't have those requirements may be using the Business Rule manager API of 10g R2 might not be a bad anticipating it will be improved in future versions.
    Regards
    -Suren

  • [svn] 3045: Fix FB-13900: Expression Evaluator: 'is' and 'as' expressions return 'Target player does not support function calls'

    Revision: 3045
    Author: [email protected]
    Date: 2008-08-29 10:59:25 -0700 (Fri, 29 Aug 2008)
    Log Message:
    Fix FB-13900: Expression Evaluator: 'is' and 'as' expressions return 'Target player does not support function calls'
    Ticket Links:
    http://bugs.adobe.com/jira/browse/FB-13900
    Modified Paths:
    flex/sdk/trunk/modules/debugger/src/java/flash/tools/debugger/concrete/BinaryOp.java
    flex/sdk/trunk/modules/debugger/src/java/flash/tools/debugger/concrete/PlayerSession.java

    Revision: 3045
    Author: [email protected]
    Date: 2008-08-29 10:59:25 -0700 (Fri, 29 Aug 2008)
    Log Message:
    Fix FB-13900: Expression Evaluator: 'is' and 'as' expressions return 'Target player does not support function calls'
    Ticket Links:
    http://bugs.adobe.com/jira/browse/FB-13900
    Modified Paths:
    flex/sdk/trunk/modules/debugger/src/java/flash/tools/debugger/concrete/BinaryOp.java
    flex/sdk/trunk/modules/debugger/src/java/flash/tools/debugger/concrete/PlayerSession.java

  • Dynamic logic expression

    Hi Experts, 
    Iu2019m trying to build a routine with dynamic logical expressions but it's now working...
    Basically Iu2019m building a string with the expression, a and after the string it's completed Iu2019m calling a macro that consist in a if.
    if expression eq true
    return true value
    but the value returned by the macro it's always false, even when the logical expression it's true...
    i already tried the logical function BOOLC but apparently my version, ECC 6, doesnu2019t recognize it....
    Below goes the code, if anyone could help me Iu2019ll be appreciated.
    "Macro definition
    DEFINE check_condition.
    IF &1 EQ ABAP_TRUE.
        move 'X' to &2.
      endif.
    END-OF-DEFINITION.
    LOOP AT tab_regras."Rules
        CLEAR: str_cond, lv_result.
        LOOP AT dfies_tab WHERE fieldname CS 'ARGUMENTO'.
          CLEAR: lw_string, str_1, str_2, str_3.
          ASSIGN COMPONENT dfies_tab-fieldname OF STRUCTURE tab_regras TO <fs_field>.
          CHECK <fs_field> IS NOT INITIAL.
          SPLIT <fs_field> AT '/' INTO  str_1 str_2 str_3.
          ASSIGN (str_1) TO <fs_value1>.
    "     ASSIGN (str_2) TO <fs_value2>.
    "      ASSIGN (str_3) TO <fs_value3>.
          IF str_cond IS INITIAL..
            CONCATENATE <fs_value1> str_2 str_3 INTO str_cond SEPARATED BY space.
            CONTINUE.
          ENDIF.
          CONCATENATE str_cond 'and' <fs_value1> str_2 str_3 INTO str_cond SEPARATED BY space."string condition
        ENDLOOP.
        check_condition str_cond lv_result.
        CHECK lv_result EQ 'X'.
    Thanks in advance,
    Best Regards
    João Martins

    It would be helpful if you show us what is the example content of str_cond .
    Anyhow your check looks like you want to compare some condition with value X which abap_true denotes i.e.
    if field_1 = 10 and field_2 = 20 EQ 'X'. 
    endif.
    This doesn't make sense for me or maybe I am missing something which is hidden behid this str_cond . Your left hand side expression value must however be equal to right hand side value. So the conditon will only be true if
    if 'X' = 'X'.
    endif.
    Regards
    Marcin
    PS: please note that in ABAP there is no real boolean value, so you can't have condition like in JAVA or C
    if (true_condition)
    //do something
    you always have to compare two values (here abap_true which is X if fact).
    Edited by: Marcin Pciak on May 24, 2011 3:59 PM

  • How to evaluate dynamic XPath expression in BPEL?

    I have an xml file where I keep many settings for my BPEL process. At runtime, I read the file and I want to select values from it based on values in the process payload.
    For example, imagine that the process payload is an order:
    <order>
    <header>
    <id/>
    <customer_id/>
    <team_id/>
    </header>
    <items>
    <item>
    <id/>
    <sku/>
    <price/>
    <quantity/>
    </item>
    </items>
    </order>
    Now, in my xml settings file, I have a section where I keep a mapping of "team_id" and "assignment_group", so that for each team id, I can select the appropriate group to whom a task should be assigned. The relevant section of the settings file will look something like this:
    <assignment_groups>
    <group team_id='0923230'>invoice_approvers</group>
    <group team_id='3094303'>order_approvers</group>
    <group team_id='3434355'>shipping_approvers</group>
    </assignment_groups>
    So, imagine I get an order input to my process where the team_id is '3094303'. Now I have to lookup the correct assignment group in my settings file.
    So, I construct the dynamic XPath expression
    /settings/assignment_groups/group[@team_id=3094303]
    I know that this would evaluate to "order_approvers". However, even though I have the XPath expression in a BPEL variable, and I have my settings file as a BPEL variable also, I don't know how to execute the XPath expression against the settings BPEL variable to retrieve the correct value.
    Any ideas appreciated.
    Thanks,
    Jack

    James:
    Thank you for the response. Incidentally, this is the very same document and section that I have been looking at for guidance. Specifically, the section titled "Dynamically indexing by Constructing an XPath at Run Time" on page 12-13.
    I tried to do something similar to the example at the top of page 13:
    <variable name="iterator" type="xsd:integer"/>
    <assign>
    <copy>
    <from expression="concat('/invoice/line-item[',bpws:getVariableData('iterator'), ']/line-total')"/>
    <to variable="xpath"/>
    </copy>
    <copy>
    <from expression="bpws:getVariableData('input', 'payload',bpws:getVariableData('xpath')) + ..."/>
    </copy>
    </assign>
    I am able to achieve the first copy operation to get my dynamic XPath into a BPEL variable and that's fairly straightforward. But I am unable to get the second copy to work. Specifically, I am not sure what to put in the second argument of the bpws:getVariableData function. I have tried many different combinations, but when I try to compile my program, I get the following compilation error:
    Error:
    [Error ORABPEL-10902]: compilation failed
    [Description]: in "C:\code\TrainingWS\SampleGetSettings\bpel\SampleGetSettings.bpel", XML parsing failed because "org.collaxa.thirdparty.jaxen.expr.DefaultFunctionCallExpr".
    [Potential fix]: n/a.
    Thanks,
    Jack

  • Regular expression evaluation with logical operator

    Hi All,
    I am bit confuse with expression evaluation with logical operator. I am trying to understand below expression.
    eXa.getTrue() && eXa.getFalse() || eXa.getFalse() && eXa.getTrue() || eXa.getFalse() comes as false and True Count: 1 False Count: 3
    As per understanding it should be true with True Count: 1 False Count: 3
    it should execute 1st getTrue() and then 1stGetFalse() and then 2nd getfalse() and should skip 2nd getTrue() and execute 3rd fetFalse()
    eXa.getTrue() && eXa.getTrue() || eXa.getFalse() && eXa.getTrue() || eXa.getFalse() comes as true and True Count: 2 False Count: 0
    As per understanding it should be true with True Count: 3 False Count: 0
    it should execute 1st 2 getTrue() and skip 1st getFalse() and then execute 3rd getTrue() and skip last getFalse().
    eXa.getTrue() || eXa.getFalse() && eXa.getFalse() || eXa.getTrue() && eXa.getFalse() comes as true and True Count: 1 False Count: 0
    As per understanding it should be true with True Count: 2 False Count: 2
    it should execute 1st getTrue() and skip 1st getFalse() and then execute 2nd getFalse() and then execute 2nd getTrue() and then 3rd getFalse()
    Please help me to understand above expressions.
    Here is the methods definition:
    private boolean getTrue() {
              trueCount++;
              boolean retrunValue = 4 > 3;
              return retrunValue;
    private boolean getFalse() {
              falseCount++;
              boolean retrunValue = 3 > 4;
              return retrunValue;
    Thanks for ur help

    >
    adding parenthesis to make order of ops more obvious. adding "?" to show un-executed calls.
    (eXa.getTrue() && eXa.getFalse()) || (eXa.getFalse() && eXa.getTrue()) || eXa.getFalse()  comes as false and True Count: 1 False Count: 3
    (T && F) = F
    (F && ?) = F
    (F) = F
    F || F || F = F
    (eXa.getTrue() && eXa.getTrue()) || (eXa.getFalse() && eXa.getTrue()) || eXa.getFalse()  comes as true and True Count: 2 False Count: 0
    (T && T) = T
    (? && ?) = ?
    (?) = ?
    T || ? || ? = T
    eXa.getTrue() || (eXa.getFalse() && eXa.getFalse()) || (eXa.getTrue() && eXa.getFalse())  comes as true and True Count: 1 False Count: 0
    (T) = T
    (? && ?) = ?
    (? && ?) = ?
    T || ? || ? = T

  • How to build a full dynamic WHERE expression in ADFBC Faces View Object ?

    Dear Steve
    >
    I need an example about how to build a full dynamic WHERE expression in
    ADFBC View Object
    In UIX I known to do that, but i don't kwown how to do in ADFBC Faces.
    please help me to see an example.
    thanks
    Juan Carlos

    You write an AM level method to set the where clause and you expose it as a client method. (just like you did before)
    Then you can drag this method onto a page as a button and then pressing on this button will execute the method.
    If you want this to be done automatically without pressing a button - you go to the pagedef.xml file for your page and add a methodInvocation binding to that AM method, and then add a method executable to the executables section calling this method.

  • [svn] 2384: The ASC fix for ASC-3414 resulted in a correction of the behavior of E4X filter expression evaluations , but we don't want to introduce this change in a Flex 3.0.x minor release.

    Revision: 2384
    Author: [email protected]
    Date: 2008-07-08 06:23:19 -0700 (Tue, 08 Jul 2008)
    Log Message:
    The ASC fix for ASC-3414 resulted in a correction of the behavior of E4X filter expression evaluations, but we don't want to introduce this change in a Flex 3.0.x minor release. So I'm reverting this fix from the 3.0.x branch of ASC and checking in a new 1.4 downgraded asc.jar to reflect the change. This will be merged to other Flex 3 branches such as 3.0.3 and 3.1.0, but will not be merged to trunk.
    The change in behavior was noticed for Flex 3.0.x when a asc.jar was updated in revision 2108, and re-applied in revision 2129. Reverting this fix will resolve bug SDK-15924.
    QE: Yes
    Doc: No
    Checkintests: Pass
    Reviewer: Erik
    Bugs:
    SDK-15924 - Calling a .NET WebService always returns a fault (after build 2108)
    Other Bugs Referenced:
    ASC-3414 - with block uses local variable instead of object property when -warnings flag on
    Ticket Links:
    http://bugs.adobe.com/jira/browse/ASC-3414
    http://bugs.adobe.com/jira/browse/SDK-15924
    http://bugs.adobe.com/jira/browse/SDK-15924
    http://bugs.adobe.com/jira/browse/ASC-3414
    Modified Paths:
    flex/sdk/branches/3.1.0/lib/asc.jar
    flex/sdk/branches/3.1.0/modules/asc/src/java/macromedia/asc/embedding/LintEvaluator.java

    Yes but there's no point doing it here. As the Terms of Use make quite clear this is a User to User forum. It's Users like you talking to other Users. It's not a channel to communicate with Apple.
    Regards
    TD

  • [svn] 2383: The ASC fix for ASC-3414 resulted in a correction of the behavior of E4X filter expression evaluations , but we don't want to introduce this change in a Flex 3.0.x minor release.

    Revision: 2383
    Author: [email protected]
    Date: 2008-07-08 06:22:40 -0700 (Tue, 08 Jul 2008)
    Log Message:
    The ASC fix for ASC-3414 resulted in a correction of the behavior of E4X filter expression evaluations, but we don't want to introduce this change in a Flex 3.0.x minor release. So I'm reverting this fix from the 3.0.x branch of ASC and checking in a new 1.4 downgraded asc.jar to reflect the change. This will be merged to other Flex 3 branches such as 3.0.3 and 3.1.0, but will not be merged to trunk.
    The change in behavior was noticed for Flex 3.0.x when a asc.jar was updated in revision 2108, and re-applied in revision 2129. Reverting this fix will resolve bug SDK-15924.
    QE: Yes
    Doc: No
    Checkintests: Pass
    Reviewer: Erik
    Bugs:
    SDK-15924 - Calling a .NET WebService always returns a fault (after build 2108)
    Other Bugs Referenced:
    ASC-3414 - with block uses local variable instead of object property when -warnings flag on
    Ticket Links:
    http://bugs.adobe.com/jira/browse/ASC-3414
    http://bugs.adobe.com/jira/browse/SDK-15924
    http://bugs.adobe.com/jira/browse/SDK-15924
    http://bugs.adobe.com/jira/browse/ASC-3414
    Modified Paths:
    flex/sdk/branches/3.0.3/lib/asc.jar
    flex/sdk/branches/3.0.3/modules/asc/src/java/macromedia/asc/embedding/LintEvaluator.java

    Yes but there's no point doing it here. As the Terms of Use make quite clear this is a User to User forum. It's Users like you talking to other Users. It's not a channel to communicate with Apple.
    Regards
    TD

  • [svn] 2377: The ASC fix for ASC-3414 resulted in a correction of the behavior of E4X filter expression evaluations , but we don't want to introduce this change in a Flex 3.0.x minor release.

    Revision: 2377
    Author: [email protected]
    Date: 2008-07-07 14:38:01 -0700 (Mon, 07 Jul 2008)
    Log Message:
    The ASC fix for ASC-3414 resulted in a correction of the behavior of E4X filter expression evaluations, but we don't want to introduce this change in a Flex 3.0.x minor release. So I'm reverting this fix from the 3.0.x branch of ASC and checking in a new 1.4 downgraded asc.jar to reflect the change. This will be merged to other Flex 3 branches such as 3.0.3 and 3.1.0, but will not be merged to trunk.
    The change in behavior was noticed for Flex 3.0.x when a asc.jar was updated in revision 2108, and re-applied in revision 2129. Reverting this fix will resolve bug SDK-15924.
    QE: Yes
    Doc: No
    Checkintests: Pass
    Reviewer: Erik
    Bugs:
    SDK-15924 - Calling a .NET WebService always returns a fault (after build 2108)
    Other Bugs Referenced:
    ASC-3414 - with block uses local variable instead of object property when -warnings flag on
    Ticket Links:
    http://bugs.adobe.com/jira/browse/ASC-3414
    http://bugs.adobe.com/jira/browse/SDK-15924
    http://bugs.adobe.com/jira/browse/SDK-15924
    http://bugs.adobe.com/jira/browse/ASC-3414
    Modified Paths:
    flex/sdk/branches/3.0.x/lib/asc.jar
    flex/sdk/branches/3.0.x/modules/asc/src/java/macromedia/asc/embedding/LintEvaluator.java

    Yes but there's no point doing it here. As the Terms of Use make quite clear this is a User to User forum. It's Users like you talking to other Users. It's not a channel to communicate with Apple.
    Regards
    TD

  • Simple expression evaluator

    Hi all,
    need some help with an expression evaluation:
    user inputs a string like "x*x+dx*dy" or "x*dx-y*dy" and I
    would like Flash to covert this to an actionscriptline so in the
    code it appears like:
    x=3;
    dx=0.6;
    dy=0.1;
    aa=x*x+dx*dy;
    trace(aa);
    and the output would be: 9.06
    Now my problem is converting the operator.
    Anybody for a solution for this newbie?
    thnx
    Rob

    Ok, so I think my advice stands then...
    You could write your own expression parser, using eval("x")
    when you came to parse an x in the string etc...and its probably
    not too complicated to do if you're just dealing with
    multiplication and addition.... or you could use existing code like
    the example in the link I posted earlier to parse the expression
    (I've used that code before for something more complex).
    If you were writing your own parser you could use eval("x")
    ...but if it were me... I would do the opposite. That is to split
    and join the string with the variable names, subsitituting their
    values into the string and then run it through that expression
    parser. Its basically just calculating a string version of a
    numeric expression then with no variables.
    For your variable --> value substitution (split and then
    join) you need to do it in the order of the
    dx and dy
    then x and y
    so you get it to work correctly.

  • I am looking for an boolean and numeric expression evaluator. I want to be able to compare ( ,=, , or, not, and, nand, etc)and evaluate boolean/numeric expression.

    I am looking for an boolean and numeric expression evaluator. I want to be able to compare (>,=, <, or, not, and, nand, etc)and evaluate boolean/numeric expression. Does anyone know if there is any code samples anywhere. If anyone has any input, I would greately appreciate it.

    The problem is that I have to enter a string of that type (any random string), and the program should go and calculate the result for the whole stirng, by looking at which parts to calculate first (figuring out precedence), second, etc. This is like a calculator, you don't know what the user is going to enter next, so I can't just use the boolean palatte. I could use it if the equation was always of the form "a 'operator' b", where the operator is any logic or comparison operator. But that is not what I am trying to accomplish.
    Can you do logic in the formula node? I think it only allows numeric values for inputs and outputs, it doesn't let you enter in and output booleans and stuff..does it?
    Thanks,
    Yuliya

  • [svn] 1443: Fix FB-12505: Debugger expression evaluator: Literal operators return internal error

    Revision: 1443
    Author: [email protected]
    Date: 2008-04-28 15:09:20 -0700 (Mon, 28 Apr 2008)
    Log Message:
    Fix FB-12505: Debugger expression evaluator: Literal operators return internal error
    Ticket Links:
    http://bugs.adobe.com/jira/browse/FB-12505
    Modified Paths:
    flex/sdk/trunk/modules/debugger/src/java/flash/tools/debugger/expression/DebuggerExpressi on.java

  • Algorithm for Expression Evaluator

    Hi,
    Can any one help me in finding out the algo of Expression Evaluator,Changing Pre fix to Post Fix and vise versa.
    Tx in advance.
    from
    gomes_deb

    There is a math expression parser at http://www.bestcode.com. It forms a tree structure where nodes are operators, functions, variables, numbers. Each node of the tree has children (for example parameters of a function are it's children in this tree). So, if you have a "x+sin(y)", the tree is like this:
    ___+
    _x     sin
    _______y
    Then when it is time to evaluate, you set the values of X and Y and call evaluate() method and it tells you what the result is.
    The java bean is called JbcParser. It's features are:
    *Easy to use, simple class API.
    *Comes with predefined functions.
    *Users can create custom functions/variables.
    *Optimization: Constant expression elimination for repeated tasks.
    Analytical Operators: +, -, /, , ^(power)
    *Logical Operators: =(equals),&(and),|(or),!(not), <>(not equals), <=(less than or equals), >=(greater than or equals)
    *Paranthesis: (, {, [
    *Functions in the form of: f(x, y, z, ...)
    *Function parameters are not calculated until needed.
    *List of predefined functions is available in the documentation.
    *Java source code is included.
    An example of a simple expression is : LN(X)+SIN(10/2-5)
    When parsed, this expression will be represented as: since the SIN(10/2-5) is in fact SIN(0) which is a constant and is 0.
    Thus, in a loop, if you change the value of X and ask for the value of the expression, it will be evaluated quite fast since SIN(10/2-5) is not dependent on X.
    X and Y are predefined variables. You can create your own variables as needed.
    There are many predefined mathematical functions. They are listed in documentation. You can create your functions as needed. IF logic is implemented through a predefined IF(A,B,C) function. Similar logical functions can be created as needed.
    It is located at: http://www.bestcode.com/html/jbcparser.html

  • Af:commandImageLink property expressions evaluated more than once

    hi
    An image link like this ...
    <af:commandImageLink text="commandImageLink 1" id="cil1"
                         rendered="#{r_tryCommandImageLink.myCImageLinkRendered}"/>... that gets its rendered property value from a managed-bean method like this ...
    public class TryCommandImageLink
         protected int fIsMyCImageLinkRenderedCallCount = 0;
         public boolean isMyCImageLinkRendered()
              System.out.println("TryCommandImageLink.isMyCImageLinkRendered() : begin"
                   + " : count = " + (++fIsMyCImageLinkRenderedCallCount));
              return true;
    }... results in output like this ...
    TryCommandImageLink.isMyCImageLinkRendered() : begin : count = 1
    TryCommandImageLink.isMyCImageLinkRendered() : begin : count = 2
    TryCommandImageLink.isMyCImageLinkRendered() : begin : count = 3
    TryCommandImageLink.isMyCImageLinkRendered() : begin : count = 4
    TryCommandImageLink.isMyCImageLinkRendered() : begin : count = 5So, the managed-bean method is called 5 times.
    See also this example application created using JDeveloper 11.1.1.5.0,
    at http://www.consideringred.com/files/oracle/2011/EvaluatedMoreThanOnceApp-v0.01.zip
    question
    - (q1) Why is the EL expression for the rendered property of a af:commandImageLink evaluated 5 times?
    (A similar issue (Re: af:commandButton text EL expression evaluated twice) in forum thread "af:commandButton text EL expression evaluated twice" seems to be resolved (e.g. in tryCommandButton.jspx in EvaluatedMoreThanOnceApp-v0.01.zip).)
    many thanks
    Jan Vervecken

    Thanks for your reply John.
    John Stegeman wrote:
    ... 1). Do you know during which phases it's being called (you could put a phase listener that just logs so that you can see)Please consider the modified example application
    at http://www.consideringred.com/files/oracle/2012/EvaluatedMoreThanOnceApp-v0.02.zip
    It shows that the isMyCImageLinkRendered() method is called during the jsfRenderResponse phase:
    MyLogPagePhaseListener.beforePhase() : ( 9) jsfRestoreView : /faces : /tryCommandImageLink
    MyLogPagePhaseListener.afterPhase()  : ( 9) jsfRestoreView
    MyLogPagePhaseListener.beforePhase() : ( 9) jsfRestoreView : /faces : /tryCommandImageLink
    MyLogPagePhaseListener.afterPhase()  : ( 9) jsfRestoreView
    MyLogPagePhaseListener.beforePhase() : ( 0) initContext : /faces : /tryCommandImageLink
    MyLogPagePhaseListener.afterPhase()  : ( 0) initContext
    MyLogPagePhaseListener.beforePhase() : ( 1) prepareModel : /faces : /tryCommandImageLink
    MyLogPagePhaseListener.afterPhase()  : ( 1) prepareModel
    MyLogPagePhaseListener.beforePhase() : (14) jsfRenderResponse : /faces : /tryCommandImageLink
    MyLogPagePhaseListener.beforePhase() : ( 8) prepareRender : /faces : /tryCommandImageLink
    MyLogPagePhaseListener.afterPhase()  : ( 8) prepareRender
    TryCommandImageLink.isMyCImageLinkRendered() : begin : count = 1
    TryCommandImageLink.isMyCImageLinkRendered() : begin : count = 2
    TryCommandImageLink.isMyCImageLinkRendered() : begin : count = 3
    TryCommandImageLink.isMyCImageLinkRendered() : begin : count = 4
    TryCommandImageLink.isMyCImageLinkRendered() : begin : count = 5
    MyLogPagePhaseListener.afterPhase()  : (14) jsfRenderResponseIf the link is clicked, it also seems to be called during the phases jsfApplyRequestValues, jsfProcessValidations and jsfUpdateModelValues, resulting 8 calls:
    MyLogPagePhaseListener.beforePhase() : ( 0) initContext : /faces : /tryCommandImageLink
    MyLogPagePhaseListener.afterPhase()  : ( 0) initContext
    MyLogPagePhaseListener.beforePhase() : ( 1) prepareModel : /faces : /tryCommandImageLink
    MyLogPagePhaseListener.afterPhase()  : ( 1) prepareModel
    MyLogPagePhaseListener.beforePhase() : (10) jsfApplyRequestValues : /faces : /tryCommandImageLink
    TryCommandImageLink.isMyCImageLinkRendered() : begin : count = 1
    MyLogPagePhaseListener.afterPhase()  : (10) jsfApplyRequestValues
    MyLogPagePhaseListener.beforePhase() : (11) jsfProcessValidations : /faces : /tryCommandImageLink
    TryCommandImageLink.isMyCImageLinkRendered() : begin : count = 2
    MyLogPagePhaseListener.afterPhase()  : (11) jsfProcessValidations
    MyLogPagePhaseListener.beforePhase() : (12) jsfUpdateModelValues : /faces : /tryCommandImageLink
    TryCommandImageLink.isMyCImageLinkRendered() : begin : count = 3
    MyLogPagePhaseListener.afterPhase()  : (12) jsfUpdateModelValues
    MyLogPagePhaseListener.beforePhase() : ( 5) validateModelUpdates : /faces : /tryCommandImageLink
    MyLogPagePhaseListener.afterPhase()  : ( 5) validateModelUpdates
    MyLogPagePhaseListener.beforePhase() : (13) jsfInvokeApplication : /faces : /tryCommandImageLink
    MyLogPagePhaseListener.afterPhase()  : (13) jsfInvokeApplication
    MyLogPagePhaseListener.beforePhase() : ( 7) metadataCommit : /faces : /tryCommandImageLink
    MyLogPagePhaseListener.afterPhase()  : ( 7) metadataCommit
    MyLogPagePhaseListener.beforePhase() : (14) jsfRenderResponse : /faces : /tryCommandImageLink
    MyLogPagePhaseListener.beforePhase() : ( 8) prepareRender : /faces : /tryCommandImageLink
    MyLogPagePhaseListener.afterPhase()  : ( 8) prepareRender
    TryCommandImageLink.isMyCImageLinkRendered() : begin : count = 4
    TryCommandImageLink.isMyCImageLinkRendered() : begin : count = 5
    TryCommandImageLink.isMyCImageLinkRendered() : begin : count = 6
    TryCommandImageLink.isMyCImageLinkRendered() : begin : count = 7
    TryCommandImageLink.isMyCImageLinkRendered() : begin : count = 8
    MyLogPagePhaseListener.afterPhase()  : (14) jsfRenderResponse
    John Stegeman wrote:... 2). Does the same behaviour occur with the visible property?In a similar way I tried:
    <af:commandImageLink text="commandImageLink to try visible" id="cil1"
                         visible="#{r_tryCImageLinkVisible.myCImageLinkVisible}"/>This results in 2 calls during the jsfRenderResponse phase:
    MyLogPagePhaseListener.beforePhase() : ( 9) jsfRestoreView : /faces : /tryCImageLinkVisible
    MyLogPagePhaseListener.afterPhase()  : ( 9) jsfRestoreView
    MyLogPagePhaseListener.beforePhase() : ( 9) jsfRestoreView : /faces : /tryCImageLinkVisible
    MyLogPagePhaseListener.afterPhase()  : ( 9) jsfRestoreView
    MyLogPagePhaseListener.beforePhase() : ( 0) initContext : /faces : /tryCImageLinkVisible
    MyLogPagePhaseListener.afterPhase()  : ( 0) initContext
    MyLogPagePhaseListener.beforePhase() : ( 1) prepareModel : /faces : /tryCImageLinkVisible
    MyLogPagePhaseListener.afterPhase()  : ( 1) prepareModel
    MyLogPagePhaseListener.beforePhase() : (14) jsfRenderResponse : /faces : /tryCImageLinkVisible
    MyLogPagePhaseListener.beforePhase() : ( 8) prepareRender : /faces : /tryCImageLinkVisible
    MyLogPagePhaseListener.afterPhase()  : ( 8) prepareRender
    TryCImageLinkVisible.isMyCImageLinkVisible() : begin : count = 1
    TryCImageLinkVisible.isMyCImageLinkVisible() : begin : count = 2
    MyLogPagePhaseListener.afterPhase()  : (14) jsfRenderResponseIf the link is clicked, still 2 calls during the jsfRenderResponse phase:
    MyLogPagePhaseListener.beforePhase() : ( 0) initContext : /faces : /tryCImageLinkVisible
    MyLogPagePhaseListener.afterPhase()  : ( 0) initContext
    MyLogPagePhaseListener.beforePhase() : ( 1) prepareModel : /faces : /tryCImageLinkVisible
    MyLogPagePhaseListener.afterPhase()  : ( 1) prepareModel
    MyLogPagePhaseListener.beforePhase() : (10) jsfApplyRequestValues : /faces : /tryCImageLinkVisible
    MyLogPagePhaseListener.afterPhase()  : (10) jsfApplyRequestValues
    MyLogPagePhaseListener.beforePhase() : (11) jsfProcessValidations : /faces : /tryCImageLinkVisible
    MyLogPagePhaseListener.afterPhase()  : (11) jsfProcessValidations
    MyLogPagePhaseListener.beforePhase() : (12) jsfUpdateModelValues : /faces : /tryCImageLinkVisible
    MyLogPagePhaseListener.afterPhase()  : (12) jsfUpdateModelValues
    MyLogPagePhaseListener.beforePhase() : ( 5) validateModelUpdates : /faces : /tryCImageLinkVisible
    MyLogPagePhaseListener.afterPhase()  : ( 5) validateModelUpdates
    MyLogPagePhaseListener.beforePhase() : (13) jsfInvokeApplication : /faces : /tryCImageLinkVisible
    MyLogPagePhaseListener.afterPhase()  : (13) jsfInvokeApplication
    MyLogPagePhaseListener.beforePhase() : ( 7) metadataCommit : /faces : /tryCImageLinkVisible
    MyLogPagePhaseListener.afterPhase()  : ( 7) metadataCommit
    MyLogPagePhaseListener.beforePhase() : (14) jsfRenderResponse : /faces : /tryCImageLinkVisible
    MyLogPagePhaseListener.beforePhase() : ( 8) prepareRender : /faces : /tryCImageLinkVisible
    MyLogPagePhaseListener.afterPhase()  : ( 8) prepareRender
    TryCImageLinkVisible.isMyCImageLinkVisible() : begin : count = 1
    TryCImageLinkVisible.isMyCImageLinkVisible() : begin : count = 2
    MyLogPagePhaseListener.afterPhase()  : (14) jsfRenderResponseQuestion (q1) remains.
    regards
    Jan

Maybe you are looking for

  • Insert new column after get then XML

    Hello, I use Oracle 8i and SQL Utility. I want to do a query and after that, modify or insert the values of some elements. xmlgen.clearBindValues; xmlgen.setBindValue('vCity', vCity); xmlSQL := 'select name, depto from emp where city = :vCity'; xmlSt

  • How to get select-options type fields in module programming

    i need to get ranges type of fields ( like we use select-options in reports) in module prgrming..im only gettin single entry field (like we use in paramenters)...how to get it like this field1  ___  to  ___    -> field2  ___  to  ___    -> Thanx, Nav

  • Wlc 5508 - ap 1141N

    /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Tabella normale"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0

  • Zune software - sync - deleted recent photos from phone accidently - photo restore options?

    This weekends photos I was syncing to PC and hit the other zune option to delete instead of sync the photos to my collection on my PC.  Is there anyway to restore the photos from the phone that were deleted?  Assuming that since there is no way curre

  • What is data take over

    wht is data take over? wht steps fallowed in data take over? wht are the entries come that ? wht r the cofiguration for that? plz