ADF Tree problem

hi all,
i have master detailed view objects
i have dropped the master view object as adf tree in my page
how can i use only specified field to get its value
i have made all fields available while creating tree
i am using adf bc jdeveloper 11.1.1.2.0
please help
thanks

1. Always Choose appropriate Subject for your questions....
2. clearly define your issue.
Your post is not clear what you need actually......Do you want to access value in java? or only want to display 1 column in the tree?
if 2nd option then edit the Tree binding in bindings section.

Similar Messages

  • Problem in executing Child VO having bind parameter for ADF tree table

    In my application i need to show a ADF Tree table which is using two view objects having view links between them
    and the child VO has a bind variable.By clicking on the parent node of the parent VO attribute it showing the right result from the child VO attribute by the view link.
    I have tried to execute the child VO programmatically (In AmImpl) with the bind variable and using ViewCriteria as well
    but both the cases the child vo is not showing the proper result according to the bind variable instead of it is showing all the records on click of the parent node attribute.
    Your help will be appreciated.
    Thanks

    Hello,
    In the same situation I added another relationship to the view link to set the parameter.
    Tricky moment is you have to name your parameter like :Bind_ParamName as view link is setting this kind of parameters (check it in Query tab).

  • ADF Tree invokeaction problem

    Hello,
    I am trying to use the ADF tree table for the first time. I have a Master VO and a Detail VO, the Master accepts a bind variable. There is a view link between the master and detail.
    When I drag and Drop the executewithparams and create an adf parameter form on my page fragment, the tree table will work as expected when the executewithparams button is clicked. However, I want to use a pageFlowScope variable and invoke the executewithparams, but the Detail VO does not load any data. The Master VO works as expected but there is no rows for the Detail VO when expanded. I am just confused, it works when I execute with an Execute With Params button, but not with an invokeaction. I can see the pageFlowScope values displayed on my page, so I know they actaully have a value.
    Here is what my pagedef looks like.
    <?xml version="1.0" encoding="UTF-8" ?>
    <pageDefinition xmlns="http://xmlns.oracle.com/adfm/uimodel"
    version="11.1.1.56.60" id="SellerReportPageDef"
    Package="Fragments">
    <parameters/>
    <executables>
    <iterator Binds="SellerReportView2" RangeSize="25"
    DataControl="AppModuleDataControl"
    id="SellerReportView2Iterator"/>
    <invokeAction id="invokeExecuteWithParams" Binds="ExecuteWithParams"
    Refresh="always"/>
    </executables>
    <bindings>
    <tree IterBinding="SellerReportView2Iterator" id="SellerReportView2">
    <nodeDefinition DefName="model.SellerReportView"
    Name="SellerReportView20">
    <AttrNames>
    <Item Value="RecordsCount"/>
    <Item Value="PersonInfo"/>
    </AttrNames>
    <Accessors>
    <Item Value="SellerReportDetail"/>
    </Accessors>
    </nodeDefinition>
    <nodeDefinition DefName="model.SellerReportDetail"
    Name="SellerReportView21">
    <AttrNames>
    <Item Value="AgencyId"/>
    <Item Value="AgencyReportNumber"/>
    <Item Value="ControlNumber"/>
    <Item Value="Dob"/>
    <Item Value="FirstName"/>
    <Item Value="FullAddress"/>
    <Item Value="LastName"/>
    <Item Value="NumOfItems"/>
    <Item Value="ShopName"/>
    <Item Value="TransactionDate"/>
    <Item Value="TransactionType"/>
    </AttrNames>
    </nodeDefinition>
    </tree>
    <action IterBinding="SellerReportView2Iterator" id="ExecuteWithParams"
    RequiresUpdateModel="true" Action="executeWithParams">
    <NamedData NDName="DateStart" NDType="oracle.jbo.domain.Date"
    NDValue="#{pageFlowScope.startDate}"/>
    <NamedData NDName="DateEnd" NDType="oracle.jbo.domain.Date"
    NDValue="#{pageFlowScope.endDate}"/>
    </action>
    </bindings>
    </pageDefinition>
    What am I missing? Any help would be great.
    Thanks,
    Jessica

    I forgot to mention I am using version 11.1.1.3

  • [SOLVED] Multiple Dynamic View Objects and View Links - ADF Tree Table

    Hi all,
    I've got a method that creates 3 dynamic viewobjects using this:
                ViewDefImpl Level1ViewDef = new ViewDefImpl("Level1View");
                Level1ViewDef.addViewAttribute("LevelDescription","LEVEL1_DESCRIPTION",String.class);
                Level1ViewDef.addViewAttribute("SetOfBooksId","SET_OF_BOOKS_ID",Number.class);
                Level1ViewDef.addViewAttribute("CodeCombinationId","CODE_COMBINATION_ID",Number.class);
                Level1ViewDef.addViewAttribute("Level1","LEVEL1",String.class);
                Level1ViewDef.addViewAttribute("AccountType","ACCOUNT_TYPE",String.class);
                Level1ViewDef.addViewAttribute("PeriodYear","PERIOD_YEAR",Number.class);
                Level1ViewDef.addViewAttribute("PeriodNum","PERIOD_NUM",Number.class);
                Level1ViewDef.addViewAttribute("PeriodName","PERIOD_NAME",String.class);
                Level1ViewDef.addViewAttribute("PtdActual","PTD_ACTUAL",Number.class);
                Level1ViewDef.addViewAttribute("YtdActual","YTD_ACTUAL",Number.class);
                Level1ViewDef.addViewAttribute("LtdActual","LTD_ACTUAL",Number.class);
                Level1ViewDef.addViewAttribute("BudgetName","BUDGET_NAME",String.class);
                Level1ViewDef.addViewAttribute("BudgetVersionId","BUDGET_VERSION_ID",Number.class);
                Level1ViewDef.addViewAttribute("PtdBudget","PTD_BUDGET",Number.class);
                Level1ViewDef.addViewAttribute("YtdBudget","YTD_BUDGET",Number.class);
                Level1ViewDef.addViewAttribute("LtdBudget","LTD_BUDGET",Number.class);
                Level1ViewDef.addViewAttribute("EncumbranceType","ENCUMBRANCE_TYPE",String.class);
                Level1ViewDef.addViewAttribute("EncumbranceTypeId","ENCUMBRANCE_TYPE_ID",Number.class);
                Level1ViewDef.addViewAttribute("PtdCommitment","PTD_COMMITMENT",Number.class);
                Level1ViewDef.addViewAttribute("YtdCommitment","YTD_COMMITMENT",Number.class);
                Level1ViewDef.addViewAttribute("LtdCommitment","LTD_COMMITMENT",Number.class);
                Level1ViewDef.setQuery(sql_level1);
                Level1ViewDef.setFullSql(true);
                Level1ViewDef.setBindingStyle(SQLBuilder.BINDING_STYLE_ORACLE_NAME);
                Level1ViewDef.resolveDefObject();
                Level1ViewDef.registerDefObject();
                ViewObject vo1 = createViewObject("Level1View",Level1ViewDef);I can create the view objects fine and create a single viewlink between two of them, however i'm getting problems with 2 view links.
    This is how I'm creating a view link:
                ViewLink Level2Level1FKLink = createViewLinkBetweenViewObjects("Level2Level1FKLink1",
                                                        "Level2View",
                                                        vo1,
                                                        new AttributeDef[]{
                                                          vo1.findAttributeDef("Level1")
                                                        vo2,
                                                        new AttributeDef[]{
                                                          vo2.findAttributeDef("Level1")
                                                        "LEVEL1 = :Bind_Level1");
                ViewLink Level3Level2FKLink = createViewLinkBetweenViewObjects("Level3Level2FKLink1",
                                                        "Level3View",
                                                        vo2,
                                                        new AttributeDef[]{
                                                          vo2.findAttributeDef("Level2")
                                                        vo3,
                                                        new AttributeDef[]{
                                                          vo3.findAttributeDef("Level2")
                                                        "LEVEL2 = :Bind_Level2");I can get the data to display on an adf tree table if i'm only using a single view link, but when i try and implement 2 view link (for 3 levels on the adf tree table) i'm getting problems displaying the data.
    I'm getting the following error:
    Aug 10, 2007 2:44:39 PM oracle.adfinternal.view.faces.renderkit.core.xhtml.PanelPartialRootRenderer encodeAll
    SEVERE: Error during partial-page rendering
    oracle.jbo.NoDefException: JBO-25058: Definition Level3View of type Attribute not found in Level2View_Level2Level1FKLink1_Level2ViewThe thing is, Level3View isn't in the Level2Level1FKLink viewlink.
    I've been reading about something similar here
    BC4J Master-Detail-Detail
    but I am still unsure of what the problem is.
    Thanks in advance.

    I found the answer here:
    http://radio.weblogs.com/0118231/stories/2004/06/10/correctlyImplementingMultilevelDynamicMasterDetail.html

  • View Criteria issue on ADF Tree

    Hi,
    JDev 11.1.1.5.0
    I am facing an issue while displaying ADF tree. I've created ParentVO & ChildVO from a single table with view criteria to filter the nodes.And then created two View links ParentToChild & ChildToChild.
    Added VOs & corresponding ViewLinks to ApplicationModule. When I tried to run application module, getting the results as per expectation (applying view criteria at each level).
    Now i've dragged the parent vo from data control on to jspx page. when I run the jspx page, it's displaying the tree structure.
    Issue is only view criteria is applying for top level nodes(parent VO) but not sub levels. If there is some issue with creation of View criteria then it should give same problem while executing AM. But while running AM, getting the expected results.
    It would be great if you provide any clue on this issue
    Thanks,
    Samba

    Thanks for your response.
    But my usecase is different. I need to filter the sublevels of the tree.
    Following is the sample
    Level1
         Level1.1
         Level1.2
         Level1.3
    Level2
         Level2.1
         Level2.2
         Level2.3
         Level2.4
    Level3
         Level3.1
         Level3.2
         Level3.3
    If I gave View Criteria as contains '2' then, Need to filter the nodes contains character 2. Able to filter first level nodes according VC. But VC is not applying for sub levels. Is there any way to set the VC in my case?

  • ADF Login problem

    Hi,
    I have implemented ADF Security along with a login bean and a home managed bean according to Frank Nimphius's article in the Oracle Magazine.
    Problems:
    1. In design view the login link is visible, but not in the browser (Firefox vers. 19).
    2. Only the logout link is visible
    3. When trying to logout the current page only refreshes
    Login bean
    package demo.view;
    import java.io.IOException;
    import java.util.Map;
    import javax.faces.application.FacesMessage;
    import javax.faces.context.ExternalContext;
    import javax.faces.context.FacesContext;
    import javax.security.auth.Subject;
    import javax.security.auth.callback.CallbackHandler;
    import javax.security.auth.login.FailedLoginException;
    import javax.security.auth.login.LoginException;
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import oracle.adf.share.ADFContext;
    import oracle.adf.view.rich.event.DialogEvent;
    import weblogic.security.SimpleCallbackHandler;
    import weblogic.security.URLCallbackHandler;
    import weblogic.security.services.Authentication;
    import weblogic.servlet.security.ServletAuthentication;
    public class LoginBean {
        String _username = null;
        String _password = null;
        public static String USERNAMETOKEN = "_____demoOnlyUsernameAttrString___________";
        public static String PASSWORDTOKEN = "_____demoOnlyPasswordAttrString___________";
        public LoginBean() {
            super();
        public void setUsername(String _username) {
            this._username = _username;
        public String getUsername() {
            return _username;
        public void setPassword(String _password) {
            this._password = _password;
        public String getPassword() {
            return _password;
      public void onLoginAction(DialogEvent dialogEvent) {
          if (dialogEvent.getOutcome()== DialogEvent.Outcome.ok ){
            doLogin();
          else{
            //cancel, do nothing
      private String doLogin() {
          String un = _username;
          byte[] pw = _password.getBytes();
          FacesContext ctx = FacesContext.getCurrentInstance();
          HttpServletRequest request = (HttpServletRequest)ctx.getExternalContext().getRequest();
          try {         
              CallbackHandler handler = new URLCallbackHandler(un,pw);
              Subject mySubject = weblogic.security.services.Authentication.login(handler);
              weblogic.servlet.security.ServletAuthentication.runAs(mySubject, request);
              ServletAuthentication.generateNewSessionID(request);
              //save username and password. Note that in a real application this is
              //*NOT* what you should do unencrypted. Note that this is a demo
              //Store username , password in session for later use
              //when connecting to Twitter
              ADFContext adfctx = ADFContext.getCurrent();
              Map sessionScope = adfctx.getSessionScope();
              sessionScope.put(this.USERNAMETOKEN, un);
              sessionScope.put(this.PASSWORDTOKEN, new String(pw));
                String loginUrl;
                loginUrl = "/adfAuthentication?success_url=/faces" + ctx.getViewRoot().getViewId();
              HttpServletResponse response = (HttpServletResponse)ctx.getExternalContext().getResponse();
              sendForward(request, response, loginUrl);
          } catch (FailedLoginException fle) {
              FacesMessage msg =
                  new FacesMessage(FacesMessage.SEVERITY_ERROR, "Incorrect Username or Password",
                                   "An incorrect Username or Password" +
                                   " was specified");
              ctx.addMessage("d2:it35", msg);
          } catch (LoginException le) {
              reportUnexpectedLoginError("LoginException", le);
          return null;
      private void sendForward(HttpServletRequest request,
                               HttpServletResponse response, String forwardUrl) {
          FacesContext ctx = FacesContext.getCurrentInstance();
          RequestDispatcher dispatcher = request.getRequestDispatcher(forwardUrl);
          try {
              dispatcher.forward(request, response);
          } catch (ServletException se) {
              reportUnexpectedLoginError("ServletException", se);
          } catch (IOException ie) {
              reportUnexpectedLoginError("IOException", ie);
          ctx.responseComplete();
      private void reportUnexpectedLoginError(String errType, Exception e) {
          FacesMessage msg =
              new FacesMessage(FacesMessage.SEVERITY_ERROR, "Unexpected error during login",
                               "Unexpected error during login (" + errType +
                               "), please consult logs for detail");
          FacesContext.getCurrentInstance().addMessage("d2:it35", msg);
          e.printStackTrace();
        public String logout() {
            FacesContext ctx = FacesContext.getCurrentInstance(); 
            ExternalContext ectx = ctx.getExternalContext();
            String logoutUrl = "faces" + ctx.getViewRoot().getViewId();
            ((HttpServletRequest)ectx.getRequest()).getSession().invalidate();
            try {
                ectx.redirect(logoutUrl);
            } catch (IOException e) {
                e.printStackTrace();
            return null;
    }Home managed bean
    package demo.view;
    import java.io.IOException;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    import javax.el.ELContext;
    import javax.el.ExpressionFactory;
    import javax.el.ValueExpression;
    import javax.faces.context.ExternalContext;
    import javax.faces.context.FacesContext;
    import javax.faces.event.ActionEvent;
    import oracle.adf.model.binding.DCIteratorBinding;
    import oracle.adf.view.rich.component.rich.RichPopup;
    import oracle.adf.view.rich.component.rich.data.RichTree;
    import oracle.adf.view.rich.component.rich.layout.RichPanelGroupLayout;
    import oracle.adf.view.rich.component.rich.nav.RichCommandImageLink;
    import oracle.adf.view.rich.context.AdfFacesContext;
    import oracle.jbo.Key;
    import oracle.jbo.uicli.binding.JUCtrlHierBinding;
    import oracle.jbo.uicli.binding.JUCtrlHierNodeBinding;
    import oracle.jbo.uicli.binding.JUCtrlHierTypeBinding;
    import oracle.jbo.uicli.binding.JUIteratorBinding;
    import org.apache.myfaces.trinidad.component.UIXSwitcher;
    import org.apache.myfaces.trinidad.event.SelectionEvent;
    import org.apache.myfaces.trinidad.model.CollectionModel;
    import org.apache.myfaces.trinidad.model.RowKeySet;
    public class HomeManagedBean {
        private RichTree locationsTree;
        private UIXSwitcher formSwitcher;
        private RichPanelGroupLayout formPanelGroup;
        private RichPopup popupP1;
        public HomeManagedBean() {
        public void setLocationsTree(RichTree locationsTree) {
            this.locationsTree = locationsTree;
        public RichTree getLocationsTree() {
            return locationsTree;
       * Custom managed bean method that takes a SelectEvent input argument to generically
       * set the current row corresponding to the selected row in the tree. Note that this
       * method is a way to replace the "makeCurrent" EL expression (#{bindings.<tree binding>.
       * treeModel.makeCurrent}that Oracle JDeveloper adds to the tree component SelectionListener
       * property when dragging a collection from the Data Controls panel. Using this custom
       * selection listener allows developers to add pre- and post processing instructions. For
       * example, you may want to enforce PPR on a specific item after a new tree node has been
       * selected. This methods performs the following steps
       * i.   get access to the tree component
       * ii.  get access to the ADF tree binding
       * iii. set the current row on the ADF binding
       * iv.  get the information about target iterators to synchronize
       * v.   synchronize target iterator
       * @param selectionEvent object passed in by ADF Faces when configuring this method to
       * become the selection listener
       * @author Frank Nimphius
      public void onTreeSelect(SelectionEvent selectionEvent) {
        /* REPLACES */
        //#{bindings.allLocations.treeModel.makeCurrent}
       /* custom pre processing goes here */
      //get the tree information from the event object
      RichTree tree1 = (RichTree) selectionEvent.getSource();
      //in a single selection case ( a setting on the tree component ) the added set only
      //has a single entry. If there are more then using this method may not be desirable.
      //Implicitly we turn the multi select in a single select later, ignoring all set
      //entries than the first
      RowKeySet rks2 = selectionEvent.getAddedSet();
      //iterate over the contained keys. Though for a single selection use case we only expect
      //one entry in here
      Iterator rksIterator = rks2.iterator();
      //support single row selection case
      if (rksIterator.hasNext()){
        //get the tree node key, which is a List of path entries describing the
        //location of the node in the tree including its parents nodes
        List key = (List)rksIterator.next();
       //get the ADF tree  binding to work with
        JUCtrlHierBinding treeBinding = null;
        //The Trinidad CollectionModel is used to provide data to trees and tables. In the
        //ADF binding case, it contains the tree binding as wrapped data
        treeBinding = (JUCtrlHierBinding) ((CollectionModel)tree1.getValue()).getWrappedData();
        //find the node identified by the node path from the ADF binding layer. Note that
        //we don't need to know about the name of the tree binding in the PageDef file because
        //all information is provided
        JUCtrlHierNodeBinding nodeBinding = nodeBinding = treeBinding.findNodeByKeyPath(key);
        //the current row is set on the iterator binding. Because all bindings have an internal
        //reference to their iterator usage, the iterator can be queried from the ADF binding
        //object
        DCIteratorBinding _treeIteratorBinding = null;
        _treeIteratorBinding = treeBinding.getDCIteratorBinding();
        Key rowKey = nodeBinding.getRowKey();
        JUIteratorBinding iterator = nodeBinding.getIteratorBinding();
        iterator.setCurrentRowWithKey(rowKey.toStringFormat(true));
        //get selected node type information
        JUCtrlHierTypeBinding typeBinding =  nodeBinding.getHierTypeBinding();
        // The tree node rule may have a target iterator defined. Target iterators are
        // configured using the Target Data Source entry in the tree node edit dialog
        // and allow developers to declaratively synchronize an independent iterator
        // binding with the node selection in the tree.
        String targetIteratorSpelString = typeBinding.getTargetIterator();     
        //chances are that the target iterator option is not configured. We avoid
        //NPE by checking this condition
        if (targetIteratorSpelString != null && !targetIteratorSpelString.isEmpty()) {
          //resolve SPEL string for target iterator
          DCIteratorBinding targetIterator = resolveTargetIterWithSpel(targetIteratorSpelString);
          //synchronize the row in the target iterator
          targetIterator.setCurrentRowWithKey(rowKey.toStringFormat(true));
        /********************* DISPLAY INPUT FORM FOR SELECTED NODE **********************/
        //get the name of the selectected tree node object. In this sample the value is
        //adf.sample.model.DepartmentsView,adf.sample.model.EmployeesView or
        //adf.sample.model.LocationsView
        String selectedNodeObjectRef = typeBinding.getStructureDefName();
        //write selected node object reference to session
        AdfFacesContext adfFacesCtx = AdfFacesContext.getCurrentInstance();
        Map viewScope = adfFacesCtx.getViewScope();
        viewScope.put("nodeRef",selectedNodeObjectRef);
        //refresh form display
        adfFacesCtx.addPartialTarget(this.getFormPanelGroup());
       * Helper method to resolve EL expression into DCIteratorBinding instance
       * @param spelExpr the SPEL expression starting with ${...}
       * @return DCIteratorBinding instance
      private DCIteratorBinding resolveTargetIterWithSpel(String spelExpr){
       FacesContext fctx = FacesContext.getCurrentInstance();
       ELContext elctx = fctx.getELContext();
       ExpressionFactory elFactory = fctx.getApplication().getExpressionFactory();
       ValueExpression valueExpr = elFactory.createValueExpression(elctx, spelExpr,Object.class);
       DCIteratorBinding dciter = (DCIteratorBinding) valueExpr.getValue(elctx);  
       return dciter;
        public void setFormPanelGroup(RichPanelGroupLayout formPanelGroup) {
            this.formPanelGroup = formPanelGroup;
        public RichPanelGroupLayout getFormPanelGroup() {
            return formPanelGroup;
        //based on the current state of the login link,
        //log user in or out
        public void onLoginLogout(ActionEvent actionEvent) {
            RichCommandImageLink rcil = (RichCommandImageLink) actionEvent.getComponent();
            String commandLinkIcon = rcil.getIcon();
            if (commandLinkIcon.indexOf("glbl_login_msg.gif") >0){
              //login
              RichPopup.PopupHints hints = new RichPopup.PopupHints();
              popupP1.show(hints);
            else{
              //logout        
              FacesContext fctx = FacesContext.getCurrentInstance();
              ExternalContext ectx = fctx.getExternalContext();
                try {
                    ectx.redirect("/adfAuthentication?logout=true&end_url=/faces/home.jspx");
                } catch (IOException e) {
                    e.printStackTrace();
        public void setPopupP1(RichPopup popupP1) {
            this.popupP1 = popupP1;
        public RichPopup getPopupP1() {
            return popupP1;
    }Source code in home page
    <af:commandImageLink text="Logout" id="commandImageLink1"
                                                              icon="#{resource['images:glbl_logout.gif']}"
                                                         rendered="#{securityContext.authenticated}" partialSubmit="true"
                                                         immediate="false"
                                                              inlineStyle="font-family:Arial, Helvetica, sans-serif; font-size:11px; color:White;"
                                                                 action="#{LoginBean.logout}"/>
                                         <af:commandImageLink text="Login" id="cil1"
                                                              icon="#{resource['images:glbl_login_msg.gif']}"
                                                         rendered="#{!securityContext.authenticated}"
                                                              inlineStyle="font-family:Arial, Helvetica, sans-serif; font-size:11px; color:White;"
                                                              action="#{LoginBean.toString}">
                                        <af:showPopupBehavior popupId="p1" triggerType="action" align="startAfter"
                                                              alignId="cil1"/>
                                    </af:commandImageLink>
                                    <af:popup id="p1" binding="#{HomeManagedBean.popupP1}">
                                        <af:dialog id="d2" title="Please Login" type="okCancel" closeIconVisible="false"
                                                   modal="true" stretchChildren="none"
                                                   dialogListener="#{LoginBean.onLoginAction}">
                                            <af:panelFormLayout id="pfl5">
                                                <af:inputText label="Username" id="it34" columns="20"
                                                              value="#{LoginBean.username}"/>
                                                <af:inputText label="Password" id="it35" secret="true" columns="20"
                                                              value="#{LoginBean.password}"/>
                                                <af:message id="m2" for="it35" messageType="error"/>
                                            </af:panelFormLayout>
                                        </af:dialog>
                                    </af:popup>Other settings:
    1. No welcome page set in web.xml
    2. No redirect page set in jazn-data.xml
    3. Users, Enterprise and application roles set in ADF Security
    4. Managed Beans registered in adfc-config.xml
    Help greatly appreciated!

    Without going through all the code:
    the visibility of the links depends on
    logout:
    rendered="#{securityContext.authenticated}"
    login:
    rendered="#{!securityContext.authenticated}"This means, if you see the logout link, but not the loging link, the framework assumes that you are logged in already.
    Investigate in this direction.
    Timo

  • ADF: Tree Refresh after Expanding a node. Please Frank have a look!

    About this post:
    Re: ADF: Tree Refresh after Expanding a node
    Frank answered that he doesn't notice that behavior. I found out that this happens if an appication uses a custom skin.
    In SRDemoSampleADFBC, SRManage.jspx (Management from menu), if you make the explorer window small enough not to cover the whole tree, you can notice this (the page jumps to the top).
    Now if you change in adf-faces-config.xml the "skin-family" tag to "oracle", you will see that the tree component has changed (it has no triangle icons why this happens) and the page doesn't refresh.
    Minas

    It seems that there's more to the tree expansion icon than the skin definition. We're using the minimal skin and ADF puts out a special character to represent the disclosure symbol (which by the way, renders differently on IE6, than IE7, than Safari or Firefox on Mac). However, switching to the Oracle skin, the disclosure symbol comes out as a full-on image (triangle including the +). We have found this frustrating because the triangles seem not sufficiently suggestive to our users - but switching to the Oracle skin has other issues with white-on-white text.
    But in any case, the tree refresh after node expansion is another annoyance as I described in the other thread linked here (including URL to see problem in action).
    Cheers, Mark

  • JDev 11g (Boxer) - ADF-Tree ExpandingProblem

    Hi,
    I use the Boxer (JDev 11.1.1.0.0) Edition.
    Technology: ADF Business Components (BC), ADF Faces
    Database: Oracle XE (HR Schema)
    I have created BC for the Departments- and Employees-table.
    I drag-and-drop the DepartmentsView1 from the DataControl to the JSF-Page (in the center of a PanelStretchLayout)
    and choose Create --&gt; Trees --&gt; ADF Tree.
    In the "Edid Tree Binding"-Dialog --&gt; Tree Level Rules, I add the EmployeesView (Code below):
    &lt;af:panelStretchLayout&gt;
    bq. &lt;f:facet name="center"&gt;bq. &lt;af:tree value="#{bindings.DepartmentsView1.treeModel}" var="node"selectionListener="#bindings.DepartmentsView1.treeModel.makeCurrent}" \\ rowSelection="single"&gt; \\ &lt;f:facet name="nodeStamp"&gt; \\ &lt;af:outputText value="#{node}"/&gt; \\ &lt;/f:facet&gt; \\ &lt;/af:tree&gt;
         &lt;/f:facet&gt;
    (Fetchsize and Rangsize are default (25), the department with ID=50 has more than 25 employees)
    Problem:
    I run the page, all works fine.
    1) First I expand the department (ID=50) --&gt;works
    2) then I retract the node (ID=50) --&gt; works
    3) I expand the department (ID=50) --&gt; problem
    ADF rendered only 25 elements (the Fetchsize) and shows the Text "Daten werden abgerufen..." (Retrieving data ...)
    Has anybody the same problem, anybody an idea?
    Many thanks!

    I believe this has already been fixed in our main code branch. I will enter a boxer bug and make sure that the fix gets backported to boxer so that it is available in the next boxer patch. If I remember correctly, the issue had to do with trees with a large display area (with default fetchSize of 25). The issue is that the tree has to make multiple round trips to the server in order fill the visible area (view port) on the page.
    Do either of the following workarounds work:
    1) Set a fetchSize attribute on the af:tree tag larger than 25 (<af:tree fetchSize="75">). You may want to increase the rangeSize in your pageDef file as well so that the model rangeSize matches the view fetchSize.
    2) Shrink the size of the tree on the page so that it does not have to make multiple round trips to the server to fill it's view port.

  • ADF Tree Traversal from one node to its leafs

    Hello,
    after a titanic effort I have been able to add a checkbox next to each node of an adf tree table.
    This checkbox is based on an "helper" entity attribute (not mapped to a column table on the database).
    My next huge problem is to perform an automatic selection of all the checkboxes next to the nodes under the currently selected one.
    For example, if the user checks a checkbox in the second level, then all the checkboxes next to the nodes under that, belonging to level three and four must be checked.
    If this helps, in my case there are at most four levels.
    Up until now I can get all the information from the currently checked node, but I fail to navigate the hierarchy under it for the automatic checking. I think that one problem is to navigate all the rows in the (only) VO the tree is based on. For example, since the tree is not expanded at the beginning, if I iterate on the VO retrieved from the current selected node at the top level, I can't see any rows corresponding to any children. Maybe I just miss something.
    I have followed this example from Frank Nimphius, which only gets the current selected nodes, as I said, but no more. Maybe this is a good starting point, but I need to advance somehow.
    http://www.oracle.com/technetwork/developer-tools/adf/learnmore/32-tree-table-from-single-vo-169174.pdf
    Can anyone help?
    Thanks.

    Hi,
    here is a sample of how to search in trees, which actually shows how to traverse trees from a specific node
    http://www.oracle.com/technetwork/developer-tools/adf/learnmore/61search-in-rendered-trees-177577.pdf
    Given you have a transient attribute defined, each node (and instance of JUCtrHierNode --> getRow will give you access to the attribute for read/access). Note that because the checkbox is stamped in the context of the tree, upon selecting a parent node, you need to refresh the tree to show the selection state change
    Frank

  • ADF Tree with Boolean Check Box: How to find selected items

    Hi Experts,
    ADF: 11.1.1.5.0
    WLS: 10.3.6
    I am using an ADF Tree which contains elements at two levels (say Departments and Employees). My requirement is to give provision for user to select Departments and Employees using the check boxes. User should be able to select what ever Departments he/she likes and what ever employees he/she likes. There should not be a provision to select Employee with out selecting the corresponding Department (root node in the tree).
    I am facing the below issues while trying to implement this use case:
    1. Always, only the first master record will be expanded by default (I am using "Display Row" property value as "default" and "ExpandAllEnabled" as "true"). My need is to expand all the master records by default. So that user need not explicitly expand each master record node and then select the associated child records.
    2. Currently, I am using value change listener associated to af:selectBooleanCheckBox to identify the Departments and Employee records that have been selected. Since not all departments (masters) are expanded by default, if user selects the check box of department (master) and then expands the department node, automatically all the employees of that department are selected. But, this event is not triggering the value change listener for the employee records. Because of this, after a department node is selected and then expanded, all the child elements' check boxes are selected but the events are not generated. Hence, I am not able to capture the selection of employee records.
    To summarize,
    1. Please let me know how to expand all master nodes in af:Tree by default.
    2. Please let me know the best approach to identify the selected items (both master and detail items) in the af:Tree component using af:selectBooleanCheckBox.
    Thanks in advance,
    Rathnam

    Hi,
                Can you please elaborate the solution? I have a similar problem in
    https://forums.oracle.com/thread/2579664

  • ADF cache problem

    Hello,
    I'm developing a web application with an ADF tree accessing to a Content DB repository. When I deploy the application and navigate to the tree everything look fine. The problem occurs, when the content of the repository changed outside of the web application (e.g. a file will be deleted with Oracle drive), the tree doesn't display the changes. The only way to get the right state of the tree, clear the browser cache and reload the page again. In my opinion it looks like a caching problem. Putting the following meta information in the html header also failed!
    <meta http-equiv="pragma" content="no-cache"/>
    <meta http-equiv="expires" content="0"/>
    <meta http-equiv="cache-control" content="no-cache"/>
    Is there a possibility to disable the caching of such ADF components?
    Hope you can help me!
    Thanks,
    Alex

    This will probably help you: http://www.oracle.com/technology/products/ias/web_cache/afc/index.html
    Regards,
    Koen Verhulst

  • Self referencing VO in an ADF Tree

    Hi @all
    i want to create an ADF Tree and found the following helpful example:
    ADF Code Corner sample #32 show how to build a tree table from a self referencing VO:
    [http://www.oracle.com/technetwork/developer-tools/adf/learnmore/index-101235.html#CodeCornerSamples]
    But i still have two questions:
    1. How can i concatenate two attributes in the View Instance?
    Table looks like
    ID ParentID OrderNo ShortText
    ====================
    1 (null) 10 Text1
    2 1 20 Text2
    3 2 30 Text3
    4 1 50 Text4
    The result should be 10.20.30.
    2. For the first tree-level the change of the ShortText attribut works fine:
    OrderNo: 10 -> Text1
    OrderNo: 50 -> Text4
    (Tree->SelectionListener: #{bindings.WicNodeView1.treeModel.makeCurrent}
    RichTextEditor -> partialTrigger: t1 (the Tree))
    But not for the Sub-Levels:
    The Problem is OrderNo 30 shows also Text1 (and not Text3).
    Do i have to write a method (bean) for the Selection Listener or is there another (shorter) way (i am using Oracle JDeveloper 11.1.2.1.0)?
    Thanks for your help!
    Gregor

    Hi,
    this should work the same. You create a tree from a POJO Data Control based on your POJO Model. Expose another collection pointing to the same data set and drag it as the form. Use the setting on the tree configuration dialog to set the current row in the tree as the current in the form iterator.
    Frank

  • [ADF] - JDev does not show 'Tree Binding Editor' when dropping a ADF Tree..

    Hi All,
    I am trying to work trough the ADF Faces/Toplink 10.1.3 tutorial: 'Build an End-to-End J2EE Application with Toplink and ADF Faces'. When I get to the point that I have to place an 'ADF Tree' object on my panel JDeveloper is supposed to come up with the Tree Binding editor, but does not.
    I reinstalled JDeveloper, killed all unnecessary Windows XP (SP2) processes (firewall and fun services) and retried. The same problem happens. I tried to create a table and this works fine. Then I installed the same zip file on Linux and the Editor shows up. Finally I installed the same zip file with a colleague - no problems.
    Does anyone have an idea what could be wrong?
    Thanks in advance, Laszlo
    PS The exception JDev throws is:
    oracle.adfdtinternal.view.common.binding.operation.CreateOperation$CreateOperationXmlCommitException
    : Unmatched braces in the pattern.
    at oracle.adfdtinternal.view.common.binding.operation.CreateOperation._rollbackAllTransactio
    ns(CreateOperation.java:563)
    at oracle.adfdtinternal.view.common.binding.operation.CreateOperation.apply(CreateOperation.
    java:118)
    at oracle.bali.xml.model.datatransfer.operation.PerformOperationAction.actionPerformed(Perfo
    rmOperationAction.java:39)
    at oracle.bali.xml.share.ActionProxy.actionPerformed(ActionProxy.java:47)
    at oracle.bali.xml.gui.swing.dnd.DropMenuInvoker$CleanupProxy.actionPerformed(DropMenuInvoke
    r.java:235)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
    at javax.swing.AbstractButton.doClick(AbstractButton.java:302)
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1000)
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1041)
    at java.awt.Component.processMouseEvent(Component.java:5488)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
    at java.awt.Component.processEvent(Component.java:5253)
    at java.awt.Container.processEvent(Container.java:1966)
    at java.awt.Component.dispatchEventImpl(Component.java:3955)
    at java.awt.Container.dispatchEventImpl(Container.java:2024)
    at java.awt.Component.dispatchEvent(Component.java:3803)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
    at java.awt.Container.dispatchEventImpl(Container.java:2010)
    at java.awt.Window.dispatchEventImpl(Window.java:1774)
    at java.awt.Component.dispatchEvent(Component.java:3803)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
    Caused by: java.lang.IllegalArgumentException: Unmatched braces in the pattern.
    at java.text.MessageFormat.applyPattern(MessageFormat.java:468)
    at java.text.MessageFormat.<init>(MessageFormat.java:350)
    at java.text.MessageFormat.format(MessageFormat.java:803)
    at oracle.bali.xml.validator.Validator.getTranslatedString(Validator.java:1350)
    at oracle.bali.xml.validator.Validator._validateChildren(Validator.java:604)
    at oracle.bali.xml.validator.Validator._validateElement(Validator.java:477)
    at oracle.bali.xml.validator.Validator._validateChildren(Validator.java:560)
    at oracle.bali.xml.validator.Validator._validateElement(Validator.java:477)
    at oracle.bali.xml.validator.Validator._validateChildren(Validator.java:560)
    at oracle.bali.xml.validator.Validator._validateElement(Validator.java:477)
    at oracle.bali.xml.validator.Validator._validateElement(Validator.java:295)
    at oracle.bali.xml.validator.Validator.validateDocument(Validator.java:132)
    at oracle.bali.xml.validator.Validator.validateSubtree(Validator.java:83)
    at oracle.bali.xml.model.XmlModel._validateSubtree(XmlModel.java:3764)
    at oracle.bali.xml.model.XmlModel._validateDocument(XmlModel.java:3636)
    at oracle.bali.xml.model.XmlModel.__precommitTransaction(XmlModel.java:3056)
    at oracle.bali.xml.model.XmlContext.__precommitTransaction(XmlContext.java:1491)
    at oracle.bali.xml.model.XmlContext.__commitTransaction(XmlContext.java:1521)
    at oracle.bali.xml.model.XmlModel.__requestCommitTransaction(XmlModel.java:3089)
    at oracle.bali.xml.model.XmlModel.commitTransaction(XmlModel.java:613)
    at oracle.bali.xml.model.XmlModel.commitTransaction(XmlModel.java:593)
    at oracle.bali.xml.model.task.StandardTransactionTask.__commitWrapperTransaction(StandardTra
    nsactionTask.java:413)
    at oracle.bali.xml.model.task.StandardTransactionTask.runThrowingXCE(StandardTransactionTask
    .java:203)
    at oracle.bali.xml.model.task.StandardTransactionTask.run(StandardTransactionTask.java:98)
    at oracle.adfdt.jdev.transaction.JDevTransactionManager.fetchUnderTransaction(JDevTransactio
    nManager.java:100)
    at oracle.adf.dt.dbpanel.DataBindingManager.createControlBinding(DataBindingManager.java:979
    at oracle.adf.dt.dbpanel.DataBindingManager.createControlBinding(DataBindingManager.java:863
    at oracle.adfdt.view.common.binding.utils.ADFBindingUtils.createControlBinding(ADFBindingUti
    ls.java:97)
    at oracle.adfdtinternal.view.faces.binding.provider.ADFTreeModelProvider.<init>(ADFTreeModel
    Provider.java:34)
    at oracle.adfdtinternal.view.faces.binding.provider.DefaultADFModelProviderFactory.createMod
    elProvider(DefaultADFModelProviderFactory.java:291)
    at oracle.adfdtinternal.view.common.binding.datatransfer.ADFBindingsProviderInfo.getData(ADF
    BindingsProviderInfo.java:40)
    at oracle.adfdtinternal.view.common.binding.datatransfer.BaseADFDataInfo.getData(BaseADFData
    Info.java:35)
    at oracle.adfdt.view.common.binding.utils.ADFBindingUtils.getTransferData(ADFBindingUtils.ja
    va:952)
    at oracle.adfdt.view.common.binding.utils.ADFBindingUtils.getTransferModelProvider(ADFBindin
    gUtils.java:976)
    at oracle.adfdtinternal.view.common.binding.datatransfer.ADFDocumentFragmentCreatorInfo.crea
    teDocumentFragment(ADFDocumentFragmentCreatorInfo.java:64)
    at oracle.adfdtinternal.view.common.binding.operation.CreateOperation.apply(CreateOperation.
    java:89)
    ... 29 more

    Solved it!
    When using windows the Control Panel --> Regional and Language Options --> Regional Options --> Standards and formats should be set to English (United States)...
    I hope development picks this up as a bug.

  • Highlight an ADF tree node when it is clicked

    Hello every onei ,
    Does anybody has any idea how to highlight an ADF tree node when it is clicked ?
    Here is my scenario:-
    I have a popup which has a tree component on left and when we click on any node in the tree we have to display the corresponding page on right side.
    As the tree is common for all pages in the popup, i created an XHTML template with tree. All the treenode pages will use this template to display the tree.This template i am using to implement in rest of the pages.
    So when i click any link on this tree will load the corresponding JSP. But i am loosing focus. i mean selected node is not highlighting. Because we are loading the entire target page with template.
    Could any let me know how to highlight the tree node ?
    The Main problem is we are not using ADF controllers. We are using managed beans, these managed beans attached to the JSPX pages.
    Kindly guide me if any one knows solution.
    Thanks & Regards,
    Sai Sravan.P

    Hello Sai,
    I am afraid you have posted your question in the wrong forum. This forum is about Oracle On Track Communication, a next-generation social enterprise collaboration product.
    Please re-post your question in an ADF related forum and I am sure someone will be able to answer.
    Thank you,
    Ernst.

  • Is there a way to retain the focus of an expanded node in ADF Tree?

    Hi! All,
    We have a requirement that the tree nodes should be expanded and collapsed(traversed,in a word), not only by mouse clicks but also using Keys(Tab+Enter keys).
    This is working fine with ADF Tree, but the problem I'm facing is that the tree node that was expanded using keys is losing focus(though the node that is expanded using mouse click is retaining focus).
    Is there a way to programmatically access the node that is expanded and retain focus on that node, even if the node expansion is done through Key event rather than mouse event?
    awaiting your suggestions,
    Thanks and Regards,
    Samba

    There are some tricky ways to adjust settings within a template (see: this) I think an easier solution is to make 3 or four templates that cover the range you are likely to encounter.  Like a 2 second, 3 second, 5 second, etc... duration template. Label them appropriately and hand over that template toolset to your colleague.
    Patrick

Maybe you are looking for