Declarative component attribute binding

Hi,
I'm sure this is an easy one, but I can't find the answer on the forum.
using JDev 11.1.1.3
I have created a declarative component with text fields bound to attributes as described in the ADF Code Corner, created the ADF Component lib etc. When I use this component in a task flow in another project, I set the properties to fields in my managed bean which is declared in the task flow, however on submission I find that my text input fields (RichInputText objects) are null i.e. the binding didn't work. I'm not sure if I should be creating 'attribute bindings' in the page definition, or if teh managed bean should be declared in the ADF component library, or if this should just work and I have done something silly.
The examples usually bind the exposed attribute properties to a data control field, I'm not sure how it works for a managed bean, can anyone point me in the right direction?
thanks in advance
steve

Hi,
it should work for managed beans as well. If your managed bean exposes a setter/getter pair, then this can be bound to the declarative component attribute binding. However, keep in mind that if the managed bean is in request scope, the bean is refreshed and this re-setted for each request. So the bean should have a scope of at least viewScope
Frank

Similar Messages

  • Persisting Declarative Component attributes using MDS

    Hi,
    I have created a Declarative Component with some custom attributes.
    Is there a way to persist the component attributes using MDS or by some other means.
    Thanks
    Prahlad

    Hi Krithika,
    Thank you for your answer. I decComp is null only if I try this code in the binding method. If I define a popupFetchListener and bind to a method in a managed bean, decComp is not nut. I don't know how to get attribute values and create my UIComponent programatically.
    Does anyone know how to achive that?
    Regards
    Joseba

  • Component attribute binding with bean property

    I have a component which i use in JSP something like this:
    <A: myComponent
    attributeVal=#{myBean.value}
    />
    in myBean:
    I have [b]getValue() and setValue().
    If i call setAttribute() function of myComponent programatically,
    say
    MyComponent myComp = (MyComponent ) uiComponent; // line 1
    myComp.setAttribute(10); // line 2
    Will statement at line2 cause myBean property to be updated?
    Thanks for your help...

    So..What can I do to the achieve the same
    functionality. Something like:myComp.getValueBinding("attributeVal").setValue(facesContext, value)

  • Navigation Name in My Declarative Component

    Dear All
    i have a Declarative component contains some buttons, one of them used for navigation between pages , and i need to send the Navigator Name as a parameter to this button.
    i can pass any parameter type ActionEvent and using ActionListener like many examples i found before , but now i need to pass String Parameter not ActionEvent Parameter.
    Please Advise.

    No, it's completely unclear to me, sorry - maybe my brain is tired - it's been a long day.
    What do you mean by a String parameter?
    If I understand you correctly, you want to specify a task flow outcome when you click a button in the declarative component? If that is the case, create an attribute on your declarative component and bind the Action property of the button to the attribute.
    If you mean something else, then give us the use case (a "for example" would make it more clear).
    John

  • Declarative component - data getting vanished

    Hi, Greetings.
    In our application we have a declarative component to display some common information and is used across the screens.
    The declarative component is binded with a view object to display data.
    All our screens are of bounded taskflow kind and each taskflow's property are set to use new transaction always and not to share data controls.
    Using breadcrum, we have implemented a workflow to navigate to next few screens.
    In this scenario, while navigating forward from one screen to another screen, everything works as exprected. So far, so good.
    But, while navigating back to any previous screen, the declarative component data is missing initially. The declarative component's data gets displayed once we perform some full page submission using some action buttons or in case any validation message gets popped up.
    I checked the program flow and the data to the declarative component's view object is getting executed and data is available at model layer.
    I also tried refreshing the component through my bean after performing an initial activity method call.
    Nothing works out.
    How can I make the declarative component display the records during initial launch of the screen.
    Any help in this regards is greatly appreciated.
    Thanks and regards,
    Guru K

    Hi, Greetings.
    The problem is with refreshing the iterator. On providing refreshCondition property for the iterator in the corresponding pagedef file as well as for the UI component, the issue got resolved.
    Thanks and regards,
    Guru K

  • Binding property of a Panel header in Declarative Component

    Hi,
    I created a Custom Declarative component, which has a panel header, i wanted to expose the binding property of the panel header so that the users can add partial triggers to it programaticaly,
    so i added a attribute of type RichPanelHeader, and used it in bindings of the panel header, but i am getting following error,
    Unserializable value:RichPanelHeader[UIXFacesBeanImpl, id=dc_cnt_ph1] for key:PropertyKey[phBinding] in console,
    and the value in bean is null.
    the code used in Panel Header of Declarative component,
    <af:panelHeader text="#{attrs.phScreenHdrTxt}" id="dc_cnt_ph1"
                          helpTopicId="#{attrs.phScreenHdrHelpTopicId}"
                          rendered="#{attrs.phScreenHdrRendered}"
                          inlineStyle="#{attrs.phScreenHdrInlineStyle}"
                          partialTriggers="#{attrs.phScreenHdrPartialTrigger}"
                          binding="#{attrs.phBinding}">
          <attribute>
              <attribute-name>phBinding</attribute-name>
              <attribute-class>oracle.adf.view.rich.component.rich.layout.RichPanelHeader</attribute-class>
            </attribute>   code used in the consumer app.
    <app:Container id="c2" phScreenHdrTxt="tab1" phBinding="#{TestBean.panelHeader}">
        <f:facet name="body">
          <af:group id="g1">
            <af:outputText value="Tab1" id="ot1"/>
            <af:commandButton text="Refresh Panel Header" id="cb1"
                              actionListener="#{TestBean.refreshPh}"/>
          </af:group>
        </f:facet>
      </app:Container>
    public class TestBean  implements Serializable{
      private RichPanelHeader panelHeader;
      public void refreshPh(ActionEvent actionEvent) {
        panelHeader.setText("Changed");
        AdfFacesContext.getCurrentInstance().addPartialTarget(panelHeader);
      public void setPanelHeader(RichPanelHeader panelHeader) {
        this.panelHeader = panelHeader;
      public RichPanelHeader getPanelHeader() {
        return panelHeader;
    }is there any solution or way to expose the binding property of any component in a custom declarative component?

    Hi,
    as a last resort, try javax.faces.component.UIComponent as the component class. It seems that none of the UI components implements serializable. javax.faces.component.UIComponent is the JSF base class that they all use.
    Let me know if this works. If not, I think I have another option that mayl do
    Frank

  • Error in accessing attributes of a declarative component in BackinBeanScope

    Hello,
    I'm using JDeveloper 11.1.1.4.0.
    For pagination we have created a declarative component. It's bean when in request scope works fine when the dec.comp. is used in page only once.
    In order to use it multiple times in the same page, I changed the scope to BackingBeanScope. It works fine the first time bean's method gets called. However on the next request, I'm getting NullPointerException when it tries to access the dec. comp's attribute.
    Why am I getting this error and how to correct it?
    As an alternative, we can store the attribute value received first time in a hidden form field and retrieve it every subsequent time. But this would be my last alternative.
    Appreciate a reason and a better way to resolve this.
    Regards,
    Amar

    Hi,
    Yes. The bean is declared in the dec. comp.
    Following is the code in my bean's c'tor:
    FacesContext fc                    = FacesContext.getCurrentInstance();
    ELContext elctx                    = fc.getELContext();
    ExpressionFactory elFactory    = fc.getApplication().getExpressionFactory();
    ValueExpression valueExpr      = elFactory.createValueExpression(elctx, "#{component}", UIXDeclarativeComponent.class);
    UIXDeclarativeComponent currDeclarativeComp            = (UIXDeclarativeComponent)   valueExpr.getValue(elctx);
    String currVOObjectName                                         = currDeclarativeComp.getAttributes().get("VOObject").toString();"VOObject" is the attribute name for the dec. comp. It's getting correct value the first time. Every subsequent time,the last line throws null pointer exception.
    Regards,
    Amar

  • ADF:LOV declarative component not working inside table component.

    Hi,
    I have created a custome LOV control,I am using this custom LOV control inside the table component,I am passing the below values as the parameter
    KeyValue="#{row.bindings.Value.inputValue}"
    LovModel="#{row.bindings.Value.listOfValuesModel}"
    Value- is the list of value attribute.
    When i click on the LOV search icon, the popup displays the Query model(it displays the list name at the top in the search page.so it is able to recognise the LOVmodel) but it is not able to retrive the list values.I am getting Query page with no values
    in the jspx page it is giving warning as "reference not found for row.bindings.Value.listOfValuesModel"
    Please can anyone help me on this?
    Thanks,
    Harish

    Hi Frank,
    below is my actual requirement and the solution i tried till now.
    I have a table and it has two columns let’s say “Columns” and “Values”. The first column i.e. “Columns” will be a dropdown and it will have predefined values, the other column “Values” will be a “List of value” control or similar kind of control in which the user can search and select multiple values from the popup list, and that list should dynamically bounded to the first column selected value.
    For Ex: if I select a value “Product” from the dropdown of the first column “Columns” , the control in the other column “Values” should bound to “product” list and I should be able to search and select multiple values from the pop up. And the popup should return the multiple selected values as a comma separated string to the textbox.
    In my requirement I have to use only VO’s to create the list and the control in the “Values” column should switch between these VO’s depending on the value selected in the first column.
    The solution we tried till now.
    I used a LOV switcher to achieve the above requirement. But we have a limitation in this approach as we could not do the multi select. Then we created a declarative LOV component in which we can select multiple values as a comma separated string from the popup.
    I retained the LOV switch model , instead of binding LOV switch model to the basic “Input List of Value” control in the JSPX page ,I used the LOV declarative component. Below is the code snippet which calls the declarative LOV component from JSPX page.
    <af:panelFormLayout id="pfl2">
    <af:selectOneChoice value="#{bindings.Columns.inputValue}"
    label="#{bindings.Columns.label}"
    required="#{bindings.Columns.hints.mandatory}"
    shortDesc="#{bindings.Columns.hints.tooltip}"
    id="soc3" autoSubmit="true">
    <f:selectItems value="#{bindings.Columns.items}" id="si5"/>
    </af:selectOneChoice>
    <mc:OraMultiSelect
    KeyValue="#{bindings.Value.inputValue}"
    LovModel="#{bindings.Value.listOfValuesModel}"
    id="oms2"/>
    </af:panelFormLayout>
    Where Value attribute is having LOVModel.
    The above code perfectly fine as I used it inside the “Form layout” and with the parameters passed as KeyValue="#{bindings.Value.inputValue}"
    LovModel="#{bindings.Value.listOfValuesModel}"
    The problem I am facing:
    The actual problem comes when I use this control inside the table which I required in my implementation.
    I called the declarative LOV control as shown below inside the table as I used to call the basic “Input List of value” control which works fine inside the table.
    . <af:column sortProperty="Value" sortable="false"
    headerText="#{bindings.OpPlanning1.hints.Value.label}"
    id="c1" width="133">
    <mc:OraMultiSelect KeyValue="#{row.bindings.Value.inputValue}"
    LovModel="#{row.bindings.Value.listOfValuesModel}"
    id="oms1"/>
    </af:column>
    Above code doesn’t works fine when I select value from the “Column” dropdown it displays the corresponding list model in the pop up but not able to retrieve the value of the list in the popup .
    If I pass the parameters as
    . <af:column sortProperty="Value" sortable="false"
    headerText="#{bindings.OpPlanning1.hints.Value.label}"
    id="c1" width="133">
    <mc:OraMultiSelect KeyValue="#{bindings.Value.inputValue}" --instead of ="#{row.bindings.Value.inputValue}"
    LovModel="#{bindings.Value.listOfValuesModel}"--}" --instead of ="#{row.bindings.Value.inputValue}"
    id="oms1"/>
    </af:column>
    It works fine for the first row.The subsequent rows refers the value selected in the first row dropdown.
    Thanks For the help,
    Harish
    Edited by: 886523 on Nov 3, 2011 8:04 AM

  • Declarative component stops working after taskflow-call-in-popup

    Hi!
    JDev 11.1.1.3.0
    I need a component, much like the commandToolbarButton, but I have the requirement that the user should still be able to select from the popup even if the button is disabled.
    So I created a declarative component, combining two buttons and a popup with a menu in a panelGroupLayout. The one button, the mainButton, actually executes the action, the other (with an icon only) opens a menu in a popup.
    The user selects an item from the popup, the component then PPRs the main button in code to display the user's choice in the main buttons text.
        <af:panelGroupLayout layout="horizontal" id="${component.id}_layout">
          <af:commandToolbarButton id="mainButton" text="#{component.mainButtonText}"
                                   clientComponent="true" disabled="#{!component.enabled}"
                                   partialSubmit="true"
                                   actionListener="#{component.mainButtonPressed}"/>
          <af:commandToolbarButton id="menuButton" icon="/images/arrowDownComboBox.png"
                                   partialSubmit="true" disabled="#{!component.enabled}">
            <af:showPopupBehavior alignId="mainButton" align="afterStart" popupId="commandPopup"/>
          </af:commandToolbarButton>
          <af:facetRef facetName="extensionButton"/>
          <af:popup id="commandPopup" contentDelivery="lazyUncached" childCreation="immediate"
                    clientComponent="true">
            <af:menu id="commandMenu" clientComponent="true" binding="#{component.commandMenu}"/>
          </af:popup>
        </af:panelGroupLayout>That works fine ... until the user opens a taskflow in a popup.
    I have a bounded taskflow, jspx-based, opened by a button with an action that navigates to a taskflow-call activity in a modal dialog. The user opens the taskflow, does what needs to be done, then closes the dialog.
    Still fine.
    But, after the dialog has closed, when the user selects an item from the popup menu of my declarative component, I suddenly get an NPE:
    <26.04.2011 19:07 Uhr MESZ> <Notice> <Stdout> <BEA-000000> <<RegistrationConfigurator><handleError> Server Exception during PPR, #1
    java.lang.NullPointerException: UIComponent is null
         at org.apache.myfaces.trinidad.component.UIXComponent.addPartialTarget(UIXComponent.java:498)
         at org.apache.myfaces.trinidadinternal.context.RequestContextImpl.addPartialTarget(RequestContextImpl.java:513)
         at com.ge.med.web.components.button.CommandComboButton.refreshMainButton(CommandComboButton.java:213)
         at com.ge.med.web.components.button.CommandComboButton.setSelectedCommand(CommandComboButton.java:177)
         at com.ge.med.web.components.button.CommandComboButton.commandItemPressed(CommandComboButton.java:243)
         at com.ge.med.web.components.button.CommandComboButton.processAction(CommandComboButton.java:129)
         at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)To track the problem down, I have pointed the binding attribute of the declarative component to a property in a session-scoped bean, to see what the component looks like that is set, what the children and grand children are, and who the parent is.
    This prints:
    <26.04.2011 19:07 Uhr MESZ> <Notice> <Stdout> <BEA-000000> <Setter called: DemoComboButtonComponent[oracle.adf.view.rich.component.fragment.UIXInclude$ContextualFacesBeanWrapper@1762a87, id=demoAdd]>
    <26.04.2011 19:07 Uhr MESZ> <Notice> <Stdout> <BEA-000000> <Parent: RichPanelGroupLayout[UIXFacesBeanImpl, id=cbll1]>
    <26.04.2011 19:07 Uhr MESZ> <Notice> <Stdout> <BEA-000000> <Children: [RichPanelGroupLayout[UIXFacesBeanImpl, id=demoAdd_layout]]>
    <26.04.2011 19:07 Uhr MESZ> <Notice> <Stdout> <BEA-000000> <Grand kids: [RichCommandToolbarButton[UIXFacesBeanImpl, id=mainButton], RichCommandToolbarButton[UIXFacesBeanImpl, id=menuButton], RichPopup[UIXFacesBeanImpl, id=commandPopup]]> That's fine. But when I add the same debug code to my setSelectedCommand() method (which is called when the user selects an item from the popup's menu), I get:
    <26.04.2011 19:07 Uhr MESZ> <Notice> <Stdout> <BEA-000000> <I am: DemoComboButtonComponent[oracle.adf.view.rich.component.fragment.UIXInclude$ContextualFacesBeanWrapper@ba2b1c, id=demoAdd]>
    <26.04.2011 19:07 Uhr MESZ> <Notice> <Stdout> <BEA-000000> <My Parent: null>
    <26.04.2011 19:07 Uhr MESZ> <Notice> <Stdout> <BEA-000000> <My Children: []> The empty children property explains the NPE. This NPE only happens when the user selects an item from the popup after the dialog has closed.
    Debugging showed that the new DemoComboButtonComponent is created during the restoration of (tree) state after the closing of the modal dialog. But why has it no parent? And where are the kids?
    Could the binding of the declaratice component to a session-scoped bean be the problem? Somehow prevent the state mechanism from re-building the UI component tree correctly?
    I am at the end of my wits.
    Any help is appreciated!
    Sascha

    Hi Frank,
    no, not yet. I had the feeling that it's me who is doing something wrong. Declarative components are pretty common, right? So are taskflow calls in dialogs. Someone should have noticed if there's a bug in the framework, right?!
    But I changed the scope of the bean (to backing scope and request scope) that the declarative component is bound to and I still get the error.
    I will try to create a simpler test case, and if I can reproduce with that, then I will file a bug, if there's no one that can explain the phenomenon.
    Sascha

  • Declarative Components field binding

    Can we bind a View Object to declarative component? I want to have a declarative component and whenever that declarative component would be used, it would be used with the same view object so i feel it extra work to bind all the attributes to view object's attributes whenever declarative component has to use. I want t create the component (declarative) and get bind it with a view object somehow and use it without every time going through to bind to view object or bind individual fields to view object's attributes. Any suggestions??
    Edited by: Mamoona on Jun 24, 2011 4:56 PM

    Hi,
    this is not what declarative components are for. Think of declarative components as standard JSF components, which you would not build tied to a specific model. If you need to wire a declarative component to a View Object then you expose an attribute on the declarative component that the consumer of the component the uses EL on to bind it e.g. to the ADF binding layer
    Frank

  • JSF Declarative Component - Using a method?

    Hello. I'm creating a declarative component that has a submit button. I want the submit button to be defined, but I want the person using the component to define the action (ex, they specify which method from an AM to execute) How can I do this? I tried defining a method and setting the buttons action to comp.whatever. However, when the person defines the button and points the method to the binding layer, it can never located the method.
    Thanks, Graeme.

    Hi Shay, thanks for the response. I have read the tutorial. The only difference is in the tutorial it's executing a method on the view object. I need to execute a method on my application module. I defined it on my declarative component as:
    <af:commandButton text="commandButton 1" id="dc_cb1"
    actionListener="#{comp.submitRegistrationForm}"/>
    As this kind of method attribute
    <method-attribute>
    <attribute-name>
    submitRegistrationForm
    </attribute-name>
    <method-signature>
    void submitRegistrationForm(oracle.jbo.ViewObject)
    </method-signature>
    <required>
    false
    </required>
    </method-attribute>
    Then I dragged in my custom component and defined my submit button as #{bindings.sendRegistration.execute} The sendRegistration is a method in my AM. I created a method binding for this as
    <methodAction id="sendRegistration"
    InstanceName="RegistrationAMDataControl.dataProvider"
    DataControl="RegistrationAMDataControl"
    RequiresUpdateModel="true" Action="invokeMethod"
    MethodName="sendRegistration" IsViewObjectMethod="false"
    ReturnName="RegistrationAMDataControl.methodResults.sendRegistration_RegistrationAMDataControl_dataProvider_sendRegistration_result">
    <NamedData NDName="vo" NDValue="#{bindings.FirstName.attributeValue}"
    NDType="oracle.jbo.ViewObject"/>
    </methodAction>
    However, everytime I hit the button I get an error the method does not exist. Method not found: UserRegistrationFormComponent[oracle.adf.view.rich.component.fragment.UIXInclude$ContextualFacesBeanWrapper@1572ca2, id=urf1].SubmitRegistrationForm(javax.faces.event.ActionEvent)
    Is it possible to call this to my AM?
    Thanks.

  • Dynamic Declarative Component managed bean returned null

    Hi,
    In a project from an application a DDC component is defined. This component uses a managed/backing bean with view scope.
    Using this component inside this project is working fine. This component should be used in other view controller projects, and here where the problems are.
    This project(let's call it Common) is deployed as ADF Library jar, and used in the other V-C projects.
    The big problem is that the managed bean defined for the logic of this component is not 'reacheable'.
    (Another problem is that the attribute value is not seen as its EL expression but as string, for this i found a workaround.)
    In project Common the adfc-config.xml file:
    <adfc-config xmlns="http://xmlns.oracle.com/adf/controller" version="1.2">
      <managed-bean id="__4">
        <managed-bean-name id="__2">ExtendedShuttle</managed-bean-name>
        <managed-bean-class id="__1">com.xyz.portal.taskflow.common.extendedshuttle.ExtendedShuttle</managed-bean-class>
        <managed-bean-scope id="__3">view</managed-bean-scope>
      </managed-bean>
    </adfc-config>A part from component declaration:
          <af:table var="row" rowBandingInterval="0" id="ta"
                                  rowSelection="multiple" columnStretching="last"
                                  disableColumnReordering="true" fetchSize="-1"
                                  binding="#{viewScope.ExtendedShuttle.allItemsTable}"
                                  value="#{viewScope.ExtendedShuttle.allModel}"
                                  partialTriggers="::dc_cb5 ::dc_cb3"
                                  filterVisible="true"/>The root exception is :
    javax.el.PropertyNotFoundException: Target Unreachable, 'ExtendedShuttle' returned null
    This exception is throw on com.sun.faces.application.ApplicationImpl.createComponent when *#{viewScope.ExtendedShuttle.allItemsTable}* is evaluated.
    Caused By: javax.faces.FacesException: javax.el.PropertyNotFoundException: Target Unreachable, 'ExtendedShuttle' returned null
         at com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:262)
         at javax.faces.webapp.UIComponentELTag.createComponent(UIComponentELTag.java:222)
         at javax.faces.webapp.UIComponentClassicTagBase.createFacet(UIComponentClassicTagBase.java:510)
         at javax.faces.webapp.UIComponentClassicTagBase.findComponent(UIComponentClassicTagBase.java:661)
         at javax.faces.webapp.UIComponentClassicTagBase.doStartTag(UIComponentClassicTagBase.java:1142)
         at org.apache.myfaces.trinidad.webapp.UIXComponentELTag.doStartTag(UIXComponentELTag.java:70)
         at oracle.adfinternal.view.faces.taglib.UIXTableTag.doStartTag(UIXTableTag.java:41)
         at oracle.adfinternal.view.faces.unified.taglib.data.UnifiedTableTag.doStartTag(UnifiedTableTag.java:50)
         at oracle.jsp.runtime.tree.OracleJspBodyTagNode.executeHandler(OracleJspBodyTagNode.java:50)
    Caused By: javax.faces.FacesException: javax.el.PropertyNotFoundException: Target Unreachable, 'ExtendedShuttle' returned null
         at com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:262)
         at javax.faces.webapp.UIComponentELTag.createComponent(UIComponentELTag.java:222)
         at javax.faces.webapp.UIComponentClassicTagBase.createFacet(UIComponentClassicTagBase.java:510)
         at javax.faces.webapp.UIComponentClassicTagBase.findComponent(UIComponentClassicTagBase.java:661)
         at javax.faces.webapp.UIComponentClassicTagBase.doStartTag(UIComponentClassicTagBase.java:1142)
         at org.apache.myfaces.trinidad.webapp.UIXComponentELTag.doStartTag(UIXComponentELTag.java:70)
         at oracle.adfinternal.view.faces.taglib.UIXTableTag.doStartTag(UIXTableTag.java:41)
         at oracle.adfinternal.view.faces.unified.taglib.data.UnifiedTableTag.doStartTag(UnifiedTableTag.java:50)
         at oracle.jsp.runtime.tree.OracleJspBodyTagNode.executeHandler(OracleJspBodyTagNode.java:50)
    Caused by: javax.el.PropertyNotFoundException: Target Unreachable, 'ExtendedShuttle' returned null
         at com.sun.el.parser.AstValue.getTarget(AstValue.java:88)
         at com.sun.el.parser.AstValue.setValue(AstValue.java:133)
         at com.sun.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:255)
         at com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:259)
    Can you help figure it out, why is not working or why the managed bean is not visible in other projects but only in the one where the component is defined?
    Thank you for your time,
    Bogdan
    ps: how can i format the source code, on this fourm?

    Hi Frank,
    Thank you for the answer.
    I must say i'm quite new with ADF technology and maybe my questions are silly.
    Here is a Quote from "Oracle Fusion Developer Guide - Building Rich Internet Application with Oracle ADF" by Frank Nimphius and Lynn Munsinger Chapter 15 page 498:
    "You build dynamic declarative components *instead* of tag library based declarative components, if component resuse is required *only within the application* that has the component defined."
    Maybe i misunderstand the meaning of application from this sentence, but i need this component in several ViewController projects from only one application (ADF application).
    Tag lib declarative component I would not like to have, since the (automtically) build process is not my responsability and it will take some time till is pinpointed, but still is a last resort.
    Anyway two things are strange:
    1. Why the component is still available in other projects(and the beans not)?
    2. Why when a binding variable (for example: of type FaceCtrlHierBinding) has the correct type in the declarative project and in the order projects is of type String and its value is the variable name?
    Example:
    <af:declarativeComponent ...
    AllItems="#{bindings.Action}"
    In project where the component is declared its value is an instance of FacesCtrlHierBinding and in the rest of the projects is of type String with value "Action".
    Once again thank you a lot,
    Bogdan

  • Dynamic declarative component won't work properly within table row

    Hi guys,
    I built a dynamic declarative component which basically consists of an af:inputText surrounded by a af:panelLabelAndMessage tag.
    The component works fine until I put it inside a table column, then none of the attribute values get set.
    The problem seems to be related to the table row binding #{row.binding.Name.inputValue} , if I use a regular binding #{binding.Name.inputValue} it works ok.
    The declarative components attribute is defined as
    <attribute>
        <attribute-name>kbez</attribute-name>
        <attribute-class>java.lang.Object</attribute-class>
    </attribute>and is used as the inputText's value attribute
    <af:componentDef var="attrs" componentVar="component">
        <af:panelLabelAndMessage label="#{attrs.label}" id="dc_plam1"
                                 for="dc_it1" labelStyle="white-space:nowrap;"
                                 showRequired="#{attrs.showRequired}"
                                 rendered="#{attrs.rendered}">
            <af:inputText id="dc_it1" value="#{attrs.kbez}"
                          autoSubmit="true" immediate="false" ...>The component inside a table column is set like this
    <af:declarativeComponent viewId="/WEB-INF/ikb.adf.kreda.basis/mitarbeitersuche/ddc/mitarbeiterLOV.jsff"
                             id="ddc1" label="Mitarbeiter"
                             kbez="#{row.bindings.Kbez.inputValue}"/>My JDeveloper version is 11.1.1.5.
    Am I doing it wrong or is this a bug?
    Any help is appreciated.
    Thank you,
    Achim
    Edited by: Achim Rosenfeld on Mar 8, 2013 8:41 AM

    Hi,
    +#{row.binding.Name.inputValue} , if I use a regular binding #{binding.Name.inputValue} it works ok.+
    Don't think that #{binding.Name.inputValue} works okay in a table because it doesn't stamp the component per row. Actually I don't know if we support dynamic declarative components in a stamped environment (table). I know though that we don't for taglib declarative components in this context.
    Reason why it doesn't work: Tables are stamped at runtime, which means that for better performance, only the generated HTML is reused for each row with different data - not the component. Your component requires itself to be re-created for each row so it can re-read the attribute again. This is not the case in a stameped environment
    Solution: For your particular use case I don't think that a dynamic declarative component is needed as you can add the construct (af:inputText surrounded by a af:panelLabelAndMessage) directly into an af:column tag. The declarative component makes more sense for reuse of layout areas (e.g. custom tabs) that are iterated within an af:forEach (in which case instances of the decalarative components would be created).
    Bottom line: tables stamp their components and as such the attribute property exposed on a DDC doesn't seem to be called for each row, which is by design. This can be considered a bug if there is a use case demanding for a DDC in a table. If this is a requirement for you (and you can't directly add the components to the af:column tag) feel free to file this as a service request with customer support (required a support contract) so development can have a look if the requirement is feasible to implement.
    Frank

  • Dynamic Declare Component cannot find property

    We currently have one main page calls a DDC(Dynamic declarative component) page fragment to create/update a record in database. The main page pass in a key to DDC when it loads DDC. The DDC binds to a view object with bind variable (get value from the passed key and load data from table) and several LOV attributes. Once user clicks submit button in main page, we wish that all the fields displayed in DDC could be committed to a database table to save.
    I use 11.1.1.5.
    In order to assign the bind variable of VO, we wrote a method in Application Module and make it invoked as the first executable when the main page is loaded. The deployment is fine. However, the runtime always thrown some exception to complain it cannot find property definition like this:
    ####<Aug 15, 2011 6:32:24 PM CDT> <Warning> <oracle.adfinternal.view.faces.lifecycle.LifecycleImpl> <curmailts1-corp> <AdminServer> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <6b1af60b3a40d50a:-6c52e935:131cfc2d522:-8000-000000000000024c> <1313451144494> <BEA-000000> <ADF_FACES-60098:Faces lifecycle receives unhandled exceptions in phase RENDER_RESPONSE 6
    javax.el.PropertyNotFoundException: Target Unreachable, 'WorkDescription' returned null
         at com.sun.el.parser.AstValue.getTarget(Unknown Source)
         at com.sun.el.parser.AstValue.isReadOnly(Unknown Source)
         at com.sun.el.ValueExpressionImpl.isReadOnly(Unknown Source)
         at oracle.adfinternal.view.faces.renderkit.rich.EditableValueRenderer._getUncachedReadOnly(EditableValueRenderer.java:486)
         at oracle.adfinternal.view.faces.renderkit.rich.EditableValueRenderer.cacheReadOnly(EditableValueRenderer.java:416)
         at oracle.adfinternal.view.faces.renderkit.rich.LabeledInputRenderer.beforeEncode(LabeledInputRenderer.java:128)
         at org.apache.myfaces.trinidad.render.CoreRenderer.encodeEnd(CoreRenderer.java:334)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.encodeEnd(UIXComponentBase.java:767)
         at javax.faces.component.UIComponent.encodeAll(UIComponent.java:937)
         at org.apache.myfaces.trinidad.render.CoreRenderer.encodeChild(CoreRenderer.java:399)
         at oracle.adf.view.rich.render.RichRenderer.encodeChild(RichRenderer.java:2633)
    Questions: 1) Why my method in Application Module not called?
    2) Whether DDC is a right solution for our use case? Any suggestion or sample are welcomed!
    Thanks,

    Hi,
    I appreciate if you can show your code, but before that, make sure if you're following this tip below:
    "Declarative Components are regular JSF components except that they are built as a composite out of existing ADF Faces components. Declarative components cannot have a PageDef file associated with it and instead use value or method attribute to communicate with the consuming page. When creating a declarative component, the attrs implicit object is defined that allow you to reference the component's exposed value attribute from ADF Faces components within.
    An input text field contained in an declarative component may reference a value attribute "compValue" defined on the declarative component by using the following EL
    #{attrs.compValue}
    The declarative component compValue attribute then would us an EL reference like shown next to read/write values from or to the ADF binding layer:
    #{bindings.attribute_name.inputValue}"
    (Oracle ADF Code Corner)
    Regards,

  • ADF Faces Declarative Component onLoad event call Backing Bean Method

    Hello.
    We are trying to implement a declarative component, that will be used as Flex Fields for our application, ie, the components will be created dynamically through a database configuration, and who is responsible for organizing and creating the components, is the declarative components, and its own backing bean.
    The declarative component, will receive a List of custom components, and with this list it is possible to create the components dynamically. We want the components to be created as soon as the page is loaded. The developer could place this declarative component in any region of his page, and even in another tab if he wishes. The problem is, that we cannot register a load event in the declarative component, since it doesn't have a document Object, to call the declarative components backing bean method that is responsible for creating components.
    How could we simulate the onLoad (of the declarative components) so that the backing bean method (responsible for creating component, and putting it in the view tree) could be called ?
    I've tried with a RENDER_RESPONSE phaseListener, but the beforePhase has no objects in the tree, and the afterPhase has already rendered to the client.
    Any ideas on how to achieve this ?
    Thanks a lot.
    Regards,
    John

    Hi Frank, thanks for the response.
    I'm curious about the dynamic declarative component. Any place I could check it out ?
    Back to my scenario. I'll try to be more clear to what we need!
    We have to have dynamic creation of components, based on a database configuration. This will allow our customers to have custom flex fields, without the need of us developing custom pages for each customer.
    One solution we are trying out, is the declarative component. Why ? Because the developer (when developing the page), knows that this specific page, is possible of customization by the client (custom flex fields). With this, the developer would choose where on his page the custom flex fields will be placed. Note that at this point (design time), no component (input, buttrons, etc) is created. The idea of the declarative component, is just so the Developer knows where he wants the custom fields placed in his page (a tab, below the form fields, in a another panel group, and so on). The declarative component, has only a container, PanelFormLayout, and no other component.
    What we want, is a way of calling our managed bean (the managed bean of the declarative component, that now I did configure it in the adfc-config.xml file , thanks for the tip) method, that's responsible for creating the custom components. The declarative component, receives a list of all the custom fields that needs to be created, at design time, through an attribute. The developer is responsible for setting this list when he drags the declarative component on his page.
    Now that I've put the declarative components managed bean in the adfc-config.xml file, the @PostConstruct is called correctly, but I still have a problem. At this moment (postContstruct call), my component PanelFormLayout (that is binded to the managed bean), is null. So I cannot add any component to the PanelFormLayout.
    Am I way out of line here Frank ?
    Really appreciate your comments.
    Thanks a lot.
    John

Maybe you are looking for

  • Problem with trigger and mutating table

    Hello, I have a problem with the following trigger. Everytime it starts I got an error message: ORA-04091: table ccq_test.QW_QUALIFIER is mutating, trigger/function may not see it ORA-06512: at "QW_AFTER_UPDATE_ALL", line 3 ORA-06512: at "QW_AFTER_UP

  • Use a sequence template multiple times in same project

    I have created a lower-third animated title and saved it as a sequence as it has sound. What I'm confused about it how I import that sequence and use it multiple times in the same project and change the content of the title for each sequence. If I im

  • The mobile 3000+ (1mb cache)

    will i have a problem with this in the K8N Neo Platinum? im going to be gettings the thermalright 948u to put on it. any words of good advice would be wonderful  

  • Streaming video from phone

    I want to stream video from phone's cam to a server. I found MMAPI, with RecordControl I can: try Player player = Manager.createPlayer("capture://video ?encoding=gray8"); player.realize(); RecordControl rc = (RecordControl)player.getControl("RecordCo

  • [solved] dhcpcd seriously slowing boot time, how to fix?

    As the title says, dhcpcd is really the limiting factor in my boot process. Of the 4.125 seconds spent doing userland boot stuff, 2.95 are spent waiting for dhcpcd to finish loading so the network.target is reached and the last few things can continu