Attribute Binding dynamically created fails validation

Hello.
In my taskflow I need to create both an Attribute Binding and a UIComponent (RichInputText), this is the code:
DCBindingContainer dcBindings = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
DCIteratorBinding it = ADFUtils.findIterator("MyViewIterator");
JUCtrlAttrsBinding nb = JUCtrlAttrsBinding.createAttributeBinding((JUFormBinding)dcBindings,null, "MyView", null, "MyViewIterator", "MyNewField");
dcBindings.addControlBinding("MyNewField", nb);
Then I create the RichInputText in a PanelFormLayout with his validator:
*ValidatorTag.BindingValidator vb = new ValidatorTag.BindingValidator(null,JSFUtils.getValueExpression("#{bindings.MyNewField.validator}"));*
*((UIXEditableValue)newRichInputText).addValidator(vb);*
The problem is on the validator.
I see the new InputText in my page and the value is right, but when I submit the field I see this error:
"Unable to resolve a Validator instance using either validatorId '' or binding '#{bindings.MyNewField.validator}'."
If I create the Attribute Binding at design time (in my PageDef) and I create dynamically the UIComponent with the validator, there is no problem!!!
Why with the dynamic creation of the Attribute Binding, the validator doesn't works (the others bindings properties work perfectly) ?

Use
Checkbox.bindChecked("<<ValueAttributeName>>);
or
Checkbox.bindChecked("<<.ValueNode.ValueAttributeName>>);
if the the attribute is inside a valuenode.
Regards, Anilkumar

Similar Messages

  • How to bind dynamically created attributes

    Hi all,
    i hv created an appl where all the attributes hv been created dynamically..
    wdContext.getNodeInfo().addAttribute("From","ddic:com.sap.dictionary.string");
        wdContext.getNodeInfo().addAttribute("To","ddic:com.sap.dictionary.string");
        wdContext.getNodeInfo().addAttribute("Subject","ddic:com.sap.dictionary.string");
        wdContext.getNodeInfo().addAttribute("Message","ddic:com.sap.dictionary.string");
    bt nw i am nt able to retrieve those.
    For ex: if i hv to set the from field to null ,hw to do so?
    (   As we used  to get it:
      wdcontext.currentContextElement().setFrom(" ");
    Plz help.
    Thanks and Regards,
    Ankita
    Edited by: Ankita Padhi on Jul 14, 2008 8:48 AM

    Hi,
    here i m giving code for your reference of a dynamic checkbox:
    IWDCheckBox checkBox =
    (IWDCheckBox) view.createElement(IWDCheckBox.class,
                                  "checkBox" + count);
    IWDMatrixHeadData checkHeadData =
    (IWDMatrixHeadData) checkBox.createLayoutData(
                                  IWDMatrixHeadData.class);
    IWDAttributeInfo attrInfo;
    info=               wdContext.nodeCheckBox().getNodeInfo().addAttribute(
         "Check" + count,          "ddic:com.sap.dictionary.boolean");
                        checkHeadData.setVAlign(WDCellVAlign.TOP);
    checkHeadData.setWidth("6%");
    checkHeadData.setColSpan(1);
    this line used to bind the context to the element:-
    checkBox.bindChecked(info);
    checkBox.setEnabled(true);
    TitleRow.addChild(checkBox);
    Hope this may help you.
    Regards,
    Deepak
    Edited by: Deepak Arora on Jul 14, 2008 9:09 AM

  • How to bind the attribute in the context to a dynamic created element?

    Hi, experts,
    There are some attributes in the node context(ee_node) that contained the attribute named "ANSSA" in the view(test_view) in the WDA for abap. In the method modifyview of the view(there is a transfered parameter that represent the name of "ANSSA")
    I want to create a dynamic element(inputfield) in the test_view. The element need bind the context attribute (ANSSA).Through the transfered parameter(para), I only know the name of the attribute binded. 
    How can I bind the attribute of the context in the following code?
    METHOD modifyview .
    *importing para type string.
    *importing m_view type ref to  if_wd_view.
    data wd_inputfield type ref to cl_wd_input_field.
    create one element automatically in the view.
      wd_inputfield = CL_WD_INPUT_FIELD=>NEW_INPUT_FIELD(
                                        view = m_view
                                        id = para
                                        BIND_VALUE = ???
    ENDMETHOD.
    I don't know how to replace the "???" in the method modifyview? Do you give me some hint for it?
    You can reply back to me via e-mail if you think we should discuss this internally at [email protected] or [email protected]
    Thanks.
    Best regards,
    tao

    Hi, Suresh,
    Thanks a lot for your help.
    The last mail have some errors. Now, I modify my code error. The following is my new code in the wddomodifyview method in the ADDR_AUTO_DISP_VIEW view.
    Now, I modify my code. The following is my new code in the wddomodifyview method in the ADDR_AUTO_DISP_VIEW view.
    METHOD wddomodifyview .
    importing view   type ref to if_wd_view.
      DATA      transparent_container           TYPE REF TO cl_wd_transparent_container.
      DATA      inputfield                      type ref to cl_wd_input_field.
      transparent_container ?= view->get_element( `TRANSPARENT_CONTAINER` ).
      transparent_container->set_visible(
        EXPORTING
          value = if_wdl_core=>visibility_visible ).
    wd_this->SET_DYNAMIC_INPUT(
       EXPORTING
         inputfield_ID =  'ANSSA'
       IMPORTING
         INPUTFIELD    =  inputfield
    **************The web page will occur error when running the WDA as soon as I write the code.***********
      transparent_container->add_child( THE_CHILD = inputfield ).
    ENDMETHOD.
    The following is the code of the SET_DYNAMIC_INPUT method.
    method SET_DYNAMIC_INPUT .
    *importing
    *INPUTFIELD_ID    type STRING
    *exporting
    *INPUTFIELD    type ref to CL_WD_INPUT_FIELD
    Data binded_context       type string.
    concatenate 'ADDR_AUTO_DISP_VIEW.EE_ADDRESS.' INPUTFIELD_ID into binded_context .
    inputfield = CL_WD_INPUT_FIELD=>NEW_INPUT_FIELD(
    id = inputfield_id
    read_only = abap_true
    BIND_VALUE = binded_context
    endmethod.
    When I run the WDA, The web page occuring the error information:
    Note
    The following error text was processed in the system DEV : Access via 'NULL' object reference not possible.
    The error occurred on the application server devserver_DEV_00 and in the work process 0 .
    The termination type was: RABAX_STATE
    The ABAP call stack was:
    Method: IF_WDR_VIEW_ELEMENT_ADAPTER~SET_CONTENT of program /1WDA/L8STANDARD==============CP
    Method: IF_WDR_VIEW_ELEMENT_ADAPTER~SET_CONTENT of program /1WDA/L7STANDARD==============CP
    Method: IF_WDR_VIEW_ELEMENT_ADAPTER~SET_CONTENT of program /1WDA/L8STANDARD==============CP
    Method: IF_WDR_VIEW_ELEMENT_ADAPTER~SET_CONTENT of program /1WDA/L8STANDARD==============CP
    Method: IF_WDR_VIEW_ELEMENT_ADAPTER~SET_CONTENT of program /1WDA/L7STANDARD==============CP
    Method: IF_WDR_VIEW_ELEMENT_ADAPTER~SET_CONTENT of program /1WDA/L8STANDARD==============CP
    Method: IF_WDR_VIEW_ELEMENT_ADAPTER~SET_CONTENT of program /1WDA/L8STANDARD==============CP
    Method: IF_WDR_VIEW_ELEMENT_ADAPTER~SET_CONTENT of program /1WDA/L7STANDARD==============CP
    Method: IF_WDR_VIEW_ELEMENT_ADAPTER~SET_CONTENT of program /1WDA/L7STANDARD==============CP
    Method: IF_WDR_VIEW_ELEMENT_ADAPTER~SET_CONTENT of program /1WDA/L8STANDARD==============CP
    But when I delete the code of the wddomodifyview, and create a inputfield in the layout of the view, and bind the "ANSSA" to the "value" property in the layout, the WDA is running correctly.
    Do you give me some hints?
    Thanks a million.
    Best regards,
    tao

  • How to set a value to a dynamically created node/attribute?

    Hi,
    I dynamically created attributes using the following method,
    IWDNodeInfo cbOptions = wdContext.getNodeInfo().addChild("cbOpt"+count, null, true, true, false, false, false, true, null, null, null);
    cbOptions.addAttribute("opt"+critEle.getQuest_Critid(), "ddic:com.sap.dictionary.string");
    How do i assign a  value to it now, since the node/attribute cannot be accessed via wdcontext?
    On a side note, it seems really troublesome if i need to use a checkbox grp(s) dynamically. I actually need to dynamically create a seperate node + attribute for each checkbox grp i have. Is there any better way to do this?
    Thanx in advance

    Hi
    Steps:
    1) Create the  action click is done statically (you cannot create action dyanmically)
    2) binding the  action click to checkbox dynamically 
    code
    public static void wdDoModifyView(IPrivateDynamicProgrammingView wdThis, IPrivateDynamicProgrammingView.IContextNode wdContext, com.sap.tc.webdynpro.progmodel.api.IWDView view, boolean firstTime)
        //@@begin wdDoModifyView
         if(firstTime){
                      IWDTransparentContainer con=(IWDTransparentContainer)view.getElement("RootUIElementContainer");
              IWDCheckBox checkBox=(IWDCheckBox)view.createElement(IWDCheckBox.class,"ck");
              IWDAction act=wdThis.wdCreateAction(IPrivateDynamicProgrammingView.WDActionEventHandler.CLICK,"");
              checkBox.setOnToggle(act);
              con.addChild(checkBox);
        //@@end
    Thanks and Regards,
    Arun

  • How to add a table (dynamic created) into a model attribute

    i have dynamically created an internal table. Generally i use model-binding in a stateful MVC-Application.
    Is there a possibiltity to transfer the dynamic table to a model. As far as i know generic attributes are not allowed in the modell class.
    Every hint welcome
    thx in advance

    By some miracle I do have this finally working.  I will warn you up front that the code is not the cleanest (I have stuff copied in from all over the place.  I probably have lots of unused variable references - but I am running out of time to clean it up further).  Also I don't have all the logic to support all your different possible dynamic structure types.  I always use SFLIGHT as my dyanmic structure.  Therefore you will have to adapt the coding to lookup the actual structure type in use.
    So I have a model that has an structure ITAB type ref to data.  In my Model initialization I go ahead and dynamically redfine this to my specific type:
    METHOD init.
      SELECT SINGLE * FROM sflight INTO CORRESPONDING FIELDS OF isflight.
      DATA: struct_type TYPE REF TO cl_abap_structdescr,
        tabletype TYPE REF TO cl_abap_tabledescr.
      struct_type ?= cl_abap_structdescr=>describe_by_name( 'SFLIGHT' ).
      CREATE DATA me->itab TYPE HANDLE struct_type.
    ENDMETHOD.
    Then in my View I have the following:
    <%@page language="abap" %>
    <%@extension name="htmlb" prefix="htmlb" %>
    <%@extension name="phtmlb" prefix="phtmlb" %>
    <%@extension name="bsp" prefix="bsp" %>
    <htmlb:content design="design2003" >
      <htmlb:page title=" " >
        <htmlb:form>
          <phtmlb:matrix width="100%" >
            <%
      field-symbols: <wa> type any.
      assign model->itab->* to <wa>.
    *  append initial line to <wa_itab> assigning <Wa>.
      data: descriptor type ref to CL_ABAP_STRUCTDESCR.
      descriptor ?= CL_ABAP_STRUCTDESCR=>describe_by_data( <wa> ).
      data: flddescr type DDFIELDS.
      flddescr = descriptor->GET_DDIC_FIELD_LIST( ).
      field-symbols: <wa_field> like line of flddescr.
      data: label type ref to cl_htmlb_label.
      data: input type ref to CL_HTMLB_INPUTFIELD.
      data: binding_string type string.
      "Loop through each field in the structure Definition
      loop at flddescr assigning <Wa_field>.
      clear label.
      clear input.
      concatenate '//model/itab.'
      <wa_field>-FIELDNAME
      into binding_string.
      label ?= cl_htmlb_label=>factory( _for = binding_string ).
      input ?= cl_htmlb_inputfield=>factory( _value = binding_string ).
            %>
            <phtmlb:matrixCell row    = "+1"
                               vAlign = "TOP" />
            <bsp:bee bee="<%= label %>" />
            <phtmlb:matrixCell col    = "+1"
                               vAlign = "TOP" />
            <bsp:bee bee="<%= input %>" />
            <%
      endloop.
            %>
          </phtmlb:matrix>
         <htmlb:button  id="Test" onClick="Test" text="Submit"/>
        </htmlb:form>
      </htmlb:page>
    The key to making this work are custom getter/setters.  In your model class, you can copy from the template methods (Like GETM_S_XYZ for the metadata structure method).  Copy them and remove the _ on the front of the name.  Then change XYZ to the name of the attribute you are binding for.  The following are my custom methods. 
    method get_m_s_itab .
    * uses ****************************************************************
    * data ****************************************************************
    * code ****************************************************************
    * method is supposed to return either info about a specific component
    * of a structure (component is not initial -> return ref to
    * if_bsp_metadata_simple) or the complete structure
    * (component is initial -> return ref to if_bsp_metadata_struct)
      data: l_attribute_ref type ref to data,
               l_attr_ref  type ref to data,
               l_exception     type ref to cx_root,
               l_ex            type ref to cx_sy_conversion_error,
               l_ex_bsp        type ref to cx_bsp_conversion_exception,
               l_ex2           type ref to cx_bsp_t100_exception,
               l_type          type i,
               l_index         type i,
               l_name          type string,
               l_component     type string,
               l_getter        type string.
      data: l_field_ref     type ref to data,
            l_dfies_wa      type dfies,
            rtti            type ref to cl_abap_elemdescr.
      data: crap type string,
              rest type string,
              t_index(10) type c.
      split attribute_path at '[' into crap rest.
      split rest           at ']' into t_index crap.
    ****Dummy Object to avoid dumps
      create object metadata type cl_bsp_metadata_simple
        exporting info = l_dfies_wa.
      call method if_bsp_model_util~disassemble_path
        exporting
          path      = attribute_path
        importing
          name      = l_name
          index     = l_index
          component = l_component
          type      = l_type.
      data: l_dataref type string.
    ****Dynamically determine your actual structure - for this demo
    ****I just hardcode SFLIGHT
      concatenate 'SFLIGHT-' l_component into l_dataref.
      data: field type ref to data.
    ****Create a data object of the specified type
      try.
          create data field type (l_dataref).
        catch cx_sy_create_data_error.
          exit.
      endtry.
      rtti ?= cl_abap_typedescr=>describe_by_data_ref( field ).
      l_dfies_wa = rtti->get_ddic_field( ).
      clear metadata.
      create object metadata type cl_bsp_metadata_simple
        exporting info = l_dfies_wa.
    endmethod.
    method get_s_itab .
    * uses ****************************************************************
    * data ****************************************************************
    * code ****************************************************************
    * get the given value of the component of the struct, e.g.
    *  field-symbols: <l_comp> type any.
    *  assign component component of structure XYZ to <l_comp>.
    *  value = <l_comp>.
      data: l_attr_ref  type ref to data,
              l_field_ref type ref to data.
      data: l_attribute_ref type ref to data,
            l_exception     type ref to cx_root,
            l_ex            type ref to cx_sy_conversion_error,
            l_ex2           type ref to cx_bsp_t100_exception,
            l_type          type i,
            l_index         type i,
            l_name          type string,
            l_component     type string,
            l_getter        type string,
            rtti            type ref to cl_abap_elemdescr.
      field-symbols: <o_data> type any,
                     <n_data> type any.
    *Test
    call method if_bsp_model_util~disassemble_path
        exporting
          path      = attribute_path
        importing
          name      = l_name
          index     = l_index
          component = l_component
          type      = l_type.
    * get a field reference for the assignment
      field-symbols: <wa> type any,
                     <l_comp> type any.
      assign me->itab->* to <wa>.
      assign component l_component of structure <wa> to <l_comp>.
      get reference of <l_comp> into l_field_ref.
    ****Dynamically determine your actual structure - for this demo
    ****I just hardcode SFLIGHT
      data: l_dataref type string.
      concatenate 'SFLIGHT-' l_component into l_dataref.
      data: field type ref to data.
    ****Create a data object of the specified type
      try.
          create data field type (l_dataref).
        catch cx_sy_create_data_error.
          exit.
      endtry.
      assign l_field_ref->* to <o_data>.
      assign field->*       to <n_data>.
      move <o_data> to <n_data>.
    * call conversion routine
      try.
          value = if_bsp_model_util~convert_to_string(
            data_ref           = field
            attribute_path     = attribute_path
            no_conversion_exit = 0 ).
        catch cx_sy_conversion_error into l_ex.
          me->errors->add_message_from_exception(
              condition = attribute_path
              exception = l_ex
              dummy     = value ).
        catch cx_bsp_t100_exception into l_ex2.
          me->errors->add_message_from_t100(
            condition = attribute_path
            msgid     = l_ex2->msgid
            msgno     = l_ex2->msgno
            msgty     = l_ex2->msgty
            p1        = l_ex2->msgv1
            p2        = l_ex2->msgv2
            p3        = l_ex2->msgv3
            p4        = l_ex2->msgv4
            dummy     = value ).
      endtry.
    endmethod.
    method set_s_itab .
    * uses ****************************************************************
    * data ****************************************************************
    * code ****************************************************************
    * assign the given value to the component of the struct, e.g.
    *  field-symbols: <l_comp> type any.
    *  assign component component of structure XYZ to <l_comp>.
    *  <l_comp> = value.
      data: l_attr_ref  type ref to data,
               l_field_ref type ref to data.
      data: l_attribute_ref type ref to data,
            l_exception     type ref to cx_root,
            l_ex            type ref to cx_sy_conversion_error,
            l_ex_bsp        type ref to cx_bsp_conversion_exception,
            l_ex2           type ref to cx_bsp_t100_exception,
            l_type          type i,
            l_index         type i,
            l_name          type string,
            l_component     type string,
            l_getter        type string,
            rtti            type ref to cl_abap_elemdescr.
      field-symbols: <o_data> type any,
                     <n_data> type any.
    *Test
      call method if_bsp_model_util~disassemble_path
        exporting
          path      = attribute_path
        importing
          name      = l_name
          index     = l_index
          component = l_component
          type      = l_type.
    * get a field reference for the assignment
      field-symbols: <wa> type any,
                     <l_comp> type any.
      assign me->itab->* to <wa>.
      assign component l_component of structure <wa> to <l_comp>.
      get reference of <l_comp> into l_field_ref.
    ****Dynamically determine your actual structure - for this demo
    ****I just hardcode SFLIGHT
      data: l_dataref type string.
      concatenate 'SFLIGHT-' l_component into l_dataref.
      data: field type ref to data.
    ****Create a data object of the specified type
      try.
          create data field type (l_dataref).
        catch cx_sy_create_data_error.
          exit.
      endtry.
      assign field->*       to <n_data>.
      move <l_comp> to <n_data>.
    * call conversion routine
      try.
          if_bsp_model_util~convert_from_string(
                               data_ref           = field
                               value              = value
                               attribute_path     = attribute_path
                               use_bsp_exceptions = abap_true
                               no_conversion_exit = 0 ).
        catch cx_sy_conversion_error into l_ex.
          me->errors->add_message_from_exception(
              condition = attribute_path
              exception = l_ex
              dummy     = value ).
        catch cx_bsp_conversion_exception into l_ex_bsp.
          me->errors->add_message_from_exception(
              condition = attribute_path
              exception = l_ex_bsp
              dummy     = value ).
        catch cx_bsp_t100_exception into l_ex2.
          me->errors->add_message_from_t100(
            condition = attribute_path
            msgid     = l_ex2->msgid
            msgno     = l_ex2->msgno
            msgty     = l_ex2->msgty
            p1        = l_ex2->msgv1
            p2        = l_ex2->msgv2
            p3        = l_ex2->msgv3
            p4        = l_ex2->msgv4
            dummy     = value ).
      endtry.
      if <n_data> is initial.
        clear <l_comp>.
      else.
        move <n_data> to <l_comp>.
      endif.
    endmethod.
    I know that is a LOT of nasty code without too much explanation.  I'm afriad there isn't time right now to expand on how it works too much.  Between my day job and trying to finish the BSP book, there just isn't much time left.  Like I said before there is a very large section in the book on this topic that hopefully explains it.  The book will be out in December or early January - but perhaps I will get some time before then to write up something on SDN about this.

  • How to access a dynamic created attribute in a context node?

    <i>Hello,</i>
    <i>who could help? I can't set a value for a dynamically created attribute which is bind to a table.</i>
    <i>My context of the view looks as follow (is defined in NetWeaver):</i>
      - Context
         - Availability (Node)
             - vctxService (Attribute)
             - vctxServiceDesc (Attribute)
             - ... (further predefined attributes)
             - ... (some have to be set dynamically as follows)
    <i>Then I have added attributes dynamically in the wdDoModifyView(...) - method, as follows:</i>
    for (int i = 0; i < max; i++) {
       // some code to dynamically create table columns
       // adding attributes dynamically
       IWDAttributeInfo attrInfo =       wdContext.nodeAvailability().getNodeInfo().      addAttribute("vctxAvailability_" + i, "ddic:com.sap.dictionary.string");
       tv.bindText(attrInfo); // bind to TextView in table
    <i>In the method onPlugFrom... I tried to set the values for the attributes "vctxAvailability_ + i" as follows:</i>
    for (int i = 0; i < max; i++) {
       IAvailabilityElement newAvailNodeElement =     wdContext.createAvailabilityElement();
       // some values will be set for the
       // predefined attributes of AvailabilityNode
       // newAvailNodeElement.set...( value );
       // newAvailNodeElement.setVctxService( xy.getServ() );
       // now the values of dynamically created and added
       // attributes in AvailabilityNode will be added
       // THIS DOESN'T WORK
       newAvailNodeElement.setAttributeValue    ("vctxAvailability_" + i, "value" + i);
    <i>It would be great if someone could help me.
    Thanks in advance.
    Kind regards,
    Carsten</i>

    Carsten,
    Here is a sample code that creates context attributes dynamically and also sets values:
    //Creates a node
    IWDNodeInfo nodeInfo = wdContext.wdGetAPI().getRootNodeInfo().addChild("TestNode", null, true, true, false, true, false, true, null, null, null);
    //If you want to bind the node to a model node then the
    //second argument to the above method should be the
    //model class.
    //Creates an attribute under the node just created.
    IWDAttributeInfo testAttrib = wdContext.wdGetAPI().getRootNodeInfo().getChild("TestNode").addAttribute("testAttrib", "ddic:com.sap.dictionary.string");
    IWDNodeElement testNode = wdContext.getChildNode("TestNode", IWDNode.LEAD_SELECTION).getCurrentElement();
    IWDNode testNode2 = wdContext.getChildNode("TestNode", IWDNode.LEAD_SELECTION);
    //Now you can bind testNode with the Model Node
    //You can also set a value to the newly created attribute
    testNode.setAttributeValue("testAttrib", new String("Value"));
    Hope this helps.
    Shakeel

  • Dynamical changing HtmlInputText component style on failed validation...

    ...but once validation passes the modified style isn't reset...and when navigating away from the page and then back again, the component will still have the modified style.
    this is for JSF1.1 because i understand JSF1.2 has a errorStyle property.
    I understand once first entry the components are rendered and then stored in a component tree for subsequent display, but because i have dynamical changed the style property it seems to be stored in the component tree.
    here is snippets of my code
    JSP page
    <h:inputText id="textName" styleClass="inputText" *validator="#{fieldValidators.validateText}"* value="#{customer.name}" required="true">
    <f:validateLength minimum="1" maximum="40"></f:validateLength>
    </h:inputText>
    _FieldValidators class_
    public void validateText(FacesContext context, UIComponent toValidate, Object value)
    ((UIInput)toValidate).setValid(false);
    *((HtmlInputText)toValidate).setStyleClass("inputText inputValidationError");*
    FacesMessage message = new FacesMessage(errorMessage);
    context.addMessage(toValidate.getClientId(context), message);
    the style class +inputValidationError+ sets the outline of the input type to be red. so input components highlight in red when validation fails.
    so to recap my issue, when the failed validation is corrected, the component still has the +inputValidationError+ style applied, and when navigating away from the page and back to it +inputValidationError+ still is in its style, so still appears with the red border.
    any help or recommendations would be really welcome.
    thanks.

    Implement a PhaseListener which listens on the afterPhase of the RENDER_RESPONSE and get the clientId of all components which have a validation error by FacesContext#getClientIdsWithMessages() and put it in a HashSet or so. Then iterate recursively over all children of UIViewRoot and if it is an instance of UIInput, then (re)set the styleclass accordingly based on the presence of its clientId in the HashSet created before.

  • Adding f:Attribute dynamically to a dynamically created Button

    Hi ,
    I am trying to dynamically create a CommandButton and attach a f:Attribute to the same. But somehow I am not able to get hold of the correct API to do the same -
    >RichCommandButton button=new RichCommandButton();
    >button.setText("Ok");
    >AttributeTag attr=new AttributeTag();
    >attr.setValue("DC_OPERATION_BINDING", "bindings.DENY");
    >button.getChildren().add(attr);
    The issue is that the add method expects a UIComponent and attr is of type com.sun.faces.taglib.jsf_core.AttributeTag

    gues u can use it like
    button.getAttributes().put(DC_OPERATION_BINDING", "bindings.DENY");
    {code}
    http://docs.oracle.com/cd/E17802_01/j2ee/j2ee/javaserverfaces/1.2/docs/api/javax/faces/component/UIComponent.html#getAttributes%28%29                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Dynamically Binding to Dynamically Create View

    I tried to copy the code of “Dynamically Binding to Dynamically Create View object” but something is wrong because when I am debbuging it doesn’t work after the sentence vo.executeQuery();
    I suspect that the reason could be how I created the view..
    Your code is running well but not mine.
    It shows this error
    •     JBO-29000: Unexpected exception caught: java.lang.NullPointerException, msg=null
    •     null
    I don’t know why because the code is the same.
    How did you create the objet view ?
    Could you help me?

    I'd recommend checking out this article on Debugging ADF Applications:
    http://www.oracle.com/technology/products/jdev/tips/muench/debugger/index.html
    and then reporting here the full stack trace using the tips described in that article.

  • Dynamically create document type Item Attribute using WF_ENGINE.AddItem API

    Hi
    Is WF_ENGINE.AddItem API , supported to create document type Item attributes dynamically ? If yes how do we set the display name of the attribute. If no then is there is any other method to dynamically create document tyoe item attribute?
    Thanks

    Hi,
    If the document is stored on a file system, then I would replace the message body with a PL/SQL document which includes links to the files as straightforward URLs. There would be no need to include them in the Workflow in any way. For example, I recently worked with a client where all the (file) attachments made within eBusiness Suite were then migrated into Oracle Universal Content Management and the attachment was replaced with a URL to the new document. Any notifications now just reference the URL link to the document within the document management system in an HTML notification. While the processing is going on, the user is given the list of files that exist as attachments, but no links because the document is being processed by the management system.
    If the attachments are going to be stored in Workflow as documents, you won't be able to change the display name though - display name is set for the attribute on the message, not for each specific notification. Changing the value of the display name for the message would impact all notifications that use that message, which isn't what you want.
    What you need is to dynamically build the notification (either using PL/SQL or OA Framework) and include a list of attachments in the notification. This may be a direct link to the document (either in a document management system or on a file system somewhere) that you can render as a URL, or a link to code that can retrieve the document from the database and serve that to the user. This is not a straightforward piece of work.
    If this is purely internal, you might be better off having a custom form / screen which displays the different documents, and link to that from the notification. Or you could link to a standard form for the transaction and have the users pick up the attachments directly from the transaction.
    HTH,
    Matt
    WorkflowFAQ.com - the ONLY independent resource for Oracle Workflow development
    Alpha review chapters from my book "Developing With Oracle Workflow" are available via my website http://www.workflowfaq.com
    Have you read the blog at http://www.workflowfaq.com/blog ?
    WorkflowFAQ support forum: http://forum.workflowfaq.com

  • Create/Edit "Custom Attributes" in Dynamic Distribution Groups

    Hi,
    I wanna create a Dynamic Distribution Group based on the users "title" and "company".
    I've noticed that there are 15 "Custom Attributes" that I can edit in someway, I guess via PowerShell?
    So what is the easiest way to accomplice this?

    Hi,
    Agree with the above suggestion, you can also bulk change the custom attributes:
    Get-Mailbox -ResultSize Unlimited -Database Execs | Set-Mailbox -CustomAttribute1 “title”
    http://dougg.co.nz/2012/05/01/bulk-setting-exchange-2010-custom-attributes/
    to Edit Custom Attributes:
    get-mailbox -filter {customattribute1 -eq ""} | set-mailbox -customattribute1 = "<value>"
    And here is a reference about Create/Edit "Custom Attributes" in Dynamic Distribution Groups:
    http://windowsitpro.com/exchange-server-2010/exchange-2010-sp2-value-custom-attributes
    Note: Microsoft is providing this information as a convenience to you. The sites are not controlled by Microsoft. Microsoft cannot make any representations regarding the quality, safety, or suitability of any software or information found there. Please make
    sure that you completely understand the risk before retrieving any suggestions from the above link.
    Best regards,
    Angela Shi
    TechNet Community Support

  • Not Yet Documented ADF Ex 9 Dynamically Binding to Dynamically Created View

    I have dynamically created a View Object and would like to build a dynamic HTML Table on a web page based upon my view. I think something similar is done in Steve Muench's sample #9. My problem is I am new to ADF and the example was done in an earlier version of JDev (I am using 10.1.3.0.4) and the JSP page in the example will not compile. I get an error at:
    <textarea style="width: 100%" name="sql" rows="3" ><c:out value="${param.sql}"/></textarea><br>
    Saying required param "cols" is missing. I also get a nesting error in this code:
    <tr>
    <c:forEach var="attributeLabel" items="${bindings.DynamicViewObject.labelSet}">
    <th>
    because (I think) the compiler expects a </tr> and it is seeing the <c:forEach var="attributeLabel"> tag.
    Is there a setting in JDeveloper I can use to allow this application to compile? Is there a similar example done in JSF as that is what my current application is being developed using.
    TIA,
    Jeff

    Any help on this? Kind of Urgent...
    Thanks,
    Jeff

  • Dynamic DataTable without validation of the rest of the form

    I'm having a bit of trouble implementing a piece of functionality with JSF and I'm hoping someone here will have some insight into how to accomplish this.
    I have a quite large form, with some fields requiring quite complex and expensive (both performance and actual money) validation (e.g. calling external web services, etc.). For the sake of the explanation, let's say the user enters details about himself, such as name, social security number, address, etc. Along with his details, he's to enter a limited subset of the details for each of his children (say name and social security number). We do not know at design time how many children the user has (obviously), so this part of the form has to be dynamically generated. Validation is performed on these children fields as well, so the user needs to be able to edit and remove children from the form.
    Prior to JSF (straight JSP), I used DHTML and a naming scheme for these records with a custom setters in the backing beans.
    What I have tried with JSF is to have a DataTable backed by a List. This table contains a single "Add Child" button which adds a new empty row to the table. There is also a "Remove" button for each row.
    This works just great as long as I allow all other fields in the form to validate each time the user clicks the button. However, as I stated before, these validations are very very expensive (transaction based costs) . Additionally, I do not want to force the user to fill in all the other required fields (close to 40) before he can go on with the children.
    Now, setting immediate="true" on the commandButton elements solves the problem of the other form fields validating. However, now the Children in the DataTable are never set because the update model values phase is never invoked, leaving me with empty input fields. I really do not care in this instance whether the data for the Children is valid or not, I just need to get them into the form.
    I can think of at least three possible solutions:
    1) Split up the form into several pages, like a wizard. However, the customer has rejected this option.
    2) Somehow simplify the Children section by providing a single entry and a read-only table. This way I can use a simpler read-only table and I can extract the values from the request parameters directly. However, this complicated the editing of previously entered Children. To make things worse, the order of the children has to remain intact.
    3) Create a custom HtmlInputText component that sets the values regardless of whether immediate="true" or "false".
    It is this last option that I do not know how to do. Which methods would I need to override in order to get the values to be set in my bounded Children object regardless of the immediate flag?
    And of course, if anybody has any other design suggestions I'm open to them!
    Thanks in advance!
    /Kris

    nboudani , let me answer your question first. The page does have a Submit button. It also has "Add Child" and "Remove Child", and some others as well. The Submit button has immediate="false". I also need form validation for interdependent form fileds (e.g. either Passport number or social security number are required), so I'm using the "hidden input field at the bottom of the form trick". This all works well enough.
    OK, I got partway there. jaguar2010's mention of valueChangeListener made me investigate that further. So what I did was twofold. Set the immediate attribute to true for the inputText elements in question (for the Children data) as well as for the commandButton (as before). Also, add a valueChangeListener for each of the Children which simply calls updateModel.
    So, view code:
    <h:inputText id="cName"
                           valueChangeListener="#{testBean.procCNameValueChanged}"
                           value="#{child.name}"
                           required="true"
                           immediate="true"/>
    <h:inputText id="cSS"
                           valueChangeListener="#{testBean.processCSSValueChanged}"
                           value="#{child.ss}"
                           validator="#{testBean.validateCSS}"
                           immediate="true"/>
    <h:commandButton action="#{testBean.addChild}" immediate="true" value="Add Child"/>
    ...bean code:
    public void procCNameValueChanged(ValueChangeEvent event) {
        HtmlInputText sender = (HtmlInputText) event.getComponent();
        sender.updateModel(FacesContext.getCurrentInstance());
    }So, that does take care of the problem with the model not updating. However, there are a bunch of other problems still left to be resolved. For instance, as you'll notice, there is a validator attached to one of the inputs. If this validation fails, the invalid text is not put back in the input field. I can't temember now, but I think that is because the valueChangeListener is not called in that case, so the model is not updated. Sigh...
    Another problem is that for each row in the data model's table, there is a "Remove" button (not shown in above code) to enable the user to remove an entry from the list of children. Well, because JSF process events in the order of their appearance in the view code, an exeption is thrown if the removed row is not the last one, and the last row has not been "saved" yet. That is, the valueChangeListener has not been called on the last row. What happens is that first the action method for the remove button is called, then the valueChangeListener for the last row is called. But by the time the valueChangeListener event is fired, the last row has chaned its index (because the remove action method was called first) and apparently this fact has escaped JSF so it throws an exception (property not found or something).
    I'm starting to wonder if JSF is the wrong technology for complex forms. Just seems to want to do too much for me, assuming I have a simple form.

  • Attribute binding value not refreshed after transaction rollback

    Hi,
    Using ADF Faces/Trinidad + ADF Data Bindings + ADF Business Components.
    I was experimenting with task flows vs transaction control vs form validation and met the following problem.
    First, here's a little intro to my application design. A page template defines the layout. There's only one page in the application using a dynamic region to show a dynamic task flow. The template defines a menu containing navigation items; each item action changes the current dynamic task flow id.
    One of the flow starts with a data bound table listing users. Each row has an edit button to navigate to an edit form. The edit form is in a separate task flow as I want the automatic rollback triggered when a flow is abandoned.
    The problem occurs when I quit the form clicking a menu item AFTER a validation error occurred. Transaction is rollbacked as expected, however when I go back to the form (whatever row I choose), the invalid value that failed the previous validation is shown.
    It seems the attribute binding is not refreshed. To validate this hypothesis, I added a button that explicitly calls refreshControl on the attribute binding as shown below. When the button is clicked, the form shows the correct value.
        // In a managed bean
        public void refreshFirstName(ActionEvent evt)
            getBindingContainer().findCtrlBinding("FirstName").refreshControl();
        }I working on a possible workaround, but I've not succeeded yet. I'm looking into using the finalizer of the task flow (or possibly the initializer) to force a refresh of the control bindings.
    Any ideas?
    Thanx!
    Olivier

    Hi,
    I am experiencing similar strange behaviour, it sounds like it could be related, i am not using task flows though.
    I have a read only table, and when a user double-clicks on a row an af:popup is displayed which displays an edit form (contentDelivery is set to "lazyUncached" in the popup). Pressing the cancel button on the edit form executes a rollback and hides the popup. However, after this has occurred, whenever another row (or the same row) is selected in the read only table, the edit form will display data from the old record that was rolled back. I've noticed that the old data is only displayed in editable fields, while the correct data is displayed in read-only fields. I'm pretty sure the rollback works properly, and the iterator is on the correct row, just it is displaying incorrect data in the editable text fields. I've tried implementing cancel functionality with both a rollback action and refreshing the row using REFRESH_WITH_DB_FORGET_CHANGES, but the same issue exists regardless of which method is used. I've also noticed that the application starts behaving correctly again if the commit button is pressed.
    Has anyone come up with a workaround for this issue?
    By the way, is there any way we can keep track of the bug numbers that are mentioned in this forum?
    Thanks,
    Michael.

  • Clear an input box with failed validation status

    My jdev version is 11.1.1.5.0
    I have an input box with certain validation.If validation fails it doesnt clear its contents on button click.
    My button click code is :
    propButton.setValue(null);
    where propButton is binding name to button.

    Hi Lovin,
    How are you actually validating? Is it by <f:Validator> Tag, or Validation in the Button click code?
    If its in button click code: Refreshing programmatically in the button code, will ensure that the value is cleared in the inputTextBox and then refreshed.
    Refreshing programmatically:
    First, create a binding to the InputText Box in a managed bean, using the Binding attribute.
    binding="#{managedBeanName.inputTextBox}"
    public void clickButton(ActionEvent ae){
    this.getInputTextBox().setValue(null);
    AdfFacesContext.getCurrentInstance().addPartialTarget(this.getInputTextBox());
    Thanks,
    Pandu

Maybe you are looking for