ADF Faces: Update Tree Contents

Does anyone know how to update the contents of a Tree component.

To be more specific, I want to be able to refresh the tree contents CRUD (Create, Read, Update, Delete) operations are performed on the tree nodes.
Currently I provide a tree model by extending ChildPropertyTreeModel.
On every CRUD operation I create a new model, but the tree does reflect the contents of the new model.
How do can I make the tree refresh it's contents?

Similar Messages

  • ADF Faces - access to content in WEB-INF directory

    Hello,
    I create simple JSF application that use ADF Faces and deploy it to Oracle iAS. But why can i also access files in WEB-INF directory? For example, the following URL - http://myserver.si/MyApp/faces/WEB-INF/web.xml - will return the content of XML file. By my knowledge of J2EE architecture, access to this directory should be forbidden.
    Should I set some parameter on javax.faces.webapp.FacesServlet servlet filter to prevent access to WEB-INF directory? Thank you for help.
    Google also found the following links:
    - http://mail-archives.apache.org/mod_mbox/myfaces-dev/200602.mbox/%[email protected]%3E
    - http://svn.apache.org/viewcvs.cgi//myfaces/core/trunk/api/src/main/java/javax/faces/webapp/FacesServlet.java/?rev=375489&view=diff&r1=375489&r2=375488&p1=/myfaces/core/trunk/api/src/main/java/javax/faces/webapp/FacesServlet.java&p2=/myfaces/core/trunk/api/src/main/java/javax/faces/webapp/FacesServlet.java
    Regards,
    Matic

    Hi,
    the reason for this is that the WEB-INF directory is protected against direct client (browser) requests. Using Faces, the JSF servlet performs this access as a server side forward request in which case there is no container-managed protection.
    If you want to avoid this then you can write a servlet filter in fron of JSF in which you check for any occurences of directories you want to prohibit access to.
    Its not a bug, its the way J2EE is designed ;-(
    Frank

  • [ADF BC | ADF Faces] Updating a table with values updated in transaction

    Summary: A table is based on a view with a bind variable. Based on some action, I update rows in the view so that they no longer satisfy the query. How do I update the table to reflect this?
    I have an ADF Faces page with a multi-select table component on it, mapped to an ADF Business Components view object. The view object has a bind variable (:Status), which is used in the query to only retrieve rows with a specific status.
    The user selects rows in the table that should have their status changed, and then hits a button to perform the action. In the backing bean for the page, the button click is processed and the selected rows are updated to a different status. At this point the transaction is not committed.
    Changing the status of these rows now means that they no longer match the where clause of the view object, yet they still appear in the table.
    My question is, how can I update the table so that rows which don't match the where clause are removed?
    This is a simplified version of the problem I am working on - this needs to work when rows that aren't in the table are being updated so that they now MATCH the where clause and rows may also be added or completely removed.

    Quite an interesting little problem....
    I have created a simple test case to illustrate your scenario - perhaps Steve M could comment...
    My scenario:
    1). create an EO based on the HR.EMPLOYEES table
    2). create an updatable VO based upon the aforementioned EO. Add "COMMISSION_PCT IS NULL" to the where clause.
    3). Add the VO to an app module as usual.
    4). Create an ADF Faces page by dropping the VO from the data control as an ADF table. Show only first name, last name, and commission pct.
    5). Add a command button to the page so I can call various code from the backing bean.
    Now, when I update the commision for the first record to ".1" and press the submit button (the one in the table actions facet), the update "takes" - I assume that it's just in the EO cache at this point. The record still shows on the screen, even though it no longer meets the where clause criteria.
    When I add some code to the command button (#5) to perform a commit - the record STILL shows on the screen after committing to the DB. I can make the record disappear by either (in the same backing-bean method that does the commit)
    a). Re-execute the iterator after the commit
    b). Call "clearVOCaches" on the application module (forces the iterator to re-execute)
    I even tried programmatically adding the where clause back in (via addWhereClause) and re-executing the iterator - no go. I suspect that the only way to do this would be to post the changes to the DB (without committing them) and then re-execute the query. This, however, would be a killer from a scalability perspective.
    John

  • ADF faces update problem

    Hi all, I'm using ADF faces + toplink. I have developed a form that first inserts mandatory fields of a record via persistEntity function and later in same page after inserting mandatory fields of record, I want to update empty fields of record that are firstly entered via persistEntity and which are not mandatory fields ... but ... in same page mergeEntity does not work as a result couldn't update the rest of the record in database. Both persistEntity and mergeEntity is binded to same field (<constructor-name.result>) of constructor.
    I have watched from logs through processing of unit of work ... there is no update expression in logs like below :
    [TopLink Finer]: 2006.05.11 04:30:35.546--ServerSession(1693)--Thread(Thread[ApplicationServerThread-0,5,RequestThreadGroup])--client acquired
    [TopLink Finer]: 2006.05.11 04:30:35.546--ClientSession(2557)--Thread(Thread[ApplicationServerThread-0,5,RequestThreadGroup])--acquire unit of work: 2556
    [TopLink Finer]: 2006.05.11 04:30:35.546--UnitOfWork(2556)--Thread(Thread[ApplicationServerThread-0,5,RequestThreadGroup])--begin unit of work commit
    [TopLink Finer]: 2006.05.11 04:30:35.546--UnitOfWork(2556)--Thread(Thread[ApplicationServerThread-0,5,RequestThreadGroup])--end unit of work commit
    [TopLink Finer]: 2006.05.11 04:30:35.546--UnitOfWork(2556)--Thread(Thread[ApplicationServerThread-0,5,RequestThreadGroup])--release unit of work
    please tell me , why mergeEntity does not update the rest of the record after successful insert via persist entity in same page!?
    best regards...
    --baris                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

    Hi Frank, thanks for your interest to my problem :-)
    I have passed this problem... I'm using session facade there is no problem in this point. I'm using ADF Faces + Toplink + Session Facades model clearly.
    The problem is ; there is a database table which contains 30 fields and I want to get user input in one page so first of all I designed a page which gets input for only mandatory fields (not null) after returning successfully insert (a new record), I'm using the same record for other fields which are not mandatory. Because there is a newly created record, by using this record I want to update the rest of record. But mergeEntity method does not function well. I have controlled all of the fields in pageDef of this page. All are exists, but mergeEntity which points the same constructor method with persistEntity in pageDef does not function.
    anyway, I passed this problem by means of creating new object and bindings this to mergeEntity method.
    best regards...
    --baris                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • ADF Faces - af:tree - updating nodeStamp components

    My tree's nodeStamp is an af:selectBooleanCheckbox which maps to a hierarchy of items of indeterminate depth. There are usually at least 3 levels however. If I toggle a parent checkbox then all the child checkboxes must also toggle to match. That is the whole point of the parents in this tree is to be able to turn on or off sets of children, grand-children etc. This should be a pretty standard thing to do with trees. However, I have a bit of a dilemma and I'm hoping that someone out there can help me.
    When I toggle a parent checkbox the ThemeTree.valueChangeListener does a getModel().getRowData() to return the current row. I can then traverse the model tree from that instance to toggle all the children to match the state of the parent. From the model perspective everything works fine.
    However, if the tree is expanded when the parent state is changed, the visual state of the children do not change! The parent Checkbox is unchecked but the child Checkboxes remain checked :(or visa versa):
    Now to make things even more weird. If I close the parent tree and reopen it the children remain out of sync with the parent; even though the backing code model data is properly set.
    Even weirder. If the parent Checkbox is not expanded and I change the state and then I open the parent all the child Checkboxes are CORRRECTLY set.
    My jsp code looks as follows.
    <af:panelGroup partialTriggers="theme_display">
    <af:tree id="theme_tree" var="theme"
           binding="#{ThemeTree.tree}"
           value="#{ThemeTree.model}"
           partialTriggers="theme_display">
    <f:facet name="nodeStamp">
      <af:panelGroup layout="horizontal">
        <af:objectImage source="#{theme.graphic}"
                        rendered="#{theme.graphic != null}"
                        align="right"/>
        <af:objectSpacer width="3"
                         rendered="#{theme.graphic != null}"/>
        <af:selectBooleanCheckbox id="theme_tree_row"
                                  value="#{theme.display}"
                                  text="#{theme.displayName}"
                                  shortDesc="#{theme.shortDesc}"
                                  autoSubmit="true" immediate="true"
                                  valueChangeListener="#{ThemeTree.valueChangeListener}"/>
      </af:panelGroup>
    </f:facet>
    </af:tree>
    ....My ValueChangeListener looks like this.
        public void valueChangeListener(ValueChangeEvent vce) {
            if (tree != null) {
                setTreeChangeHappening(true);
                ThemeTreeBean currentTheme = (ThemeTreeBean)treeModel.getRowData();
                if (currentTheme.getChild() != null) {
                    boolean display = ((Boolean)vce.getNewValue()).booleanValue();
                    currentTheme.setDisplayAll(display);
                //TODO: is this doing what I think it is doing?  I'm starting to think not.
                AdfFacesContext afc = AdfFacesContext.getCurrentInstance();
                UIComponent checkBox = vce.getComponent();
                String id = checkBox.getId();
                int i = treeModel.getRowIndex();
                while (treeModel.isRowAvailable()) {
                    ThemeTreeBean themeBean = (ThemeTreeBean)treeModel.getRowData();
                    String x = themeBean.getName(); // used for debugging
                    String y = themeBean.getDisplayName(); // used for debuggin
                    afc.addPartialTarget(checkBox); // this might do something if we could get the instance of the UIComponent from the treeModel
                    afc.partialUpdateNotify(checkBox);
                    treeModel.setRowIndex(++i);
        }List of things that I've tried
    (a) I know how to AdfFacesContext.getCurrentInstance().addPartialTarget(vce.getComponent()) and ...partialUpdateNotify(same) but I haven't figured out how to get a handle on the UIComponent instances of the child Checkboxes. The components inside a nodeStamp facet seem to live an arms-length existance. I tried binding the selectBooleanCheckbox to a CoreSelectBooleanCheckbox property in my var class (theme) but this just doesn't work: ADF does not appear to allow it.
    (b) I tried various combinations using partialTriggers (no luck there).
    (c) The id cannot be a JSF expression (even though the JDeveloper tip claims it can; the ADF documentation says no) so I cannot get the id to find the UIComponent of the children. (Are there UIComponents of the children?)
    (d) I tried traversing the treeModel using the setRowIndex(int) method but this only stepped me through the parent level, it did no return the children. Even if it did I'm not sure how I would force the visual update of the child.
    The long and short of it is that the behaviour of components inside the nodeStamp is different and it makes for a real problem. I'm about to abandon the af:tree and see if there is anything in myfaces that might help. But before I give up altogether, I thought that I'd ask one more time to see if anyone out there could give me a hint for anything else to try.
    Thanks in advance, Mark

    More information: You cannot use the var attribute to bind the SelectBooleanCheckbox because it is not a managed bean and you can only bind to managed beans. So I created a CoreSelectBooleanCheckbox property in the ThemeTreeTree class (which is a managed bean) with the intent of matching references to the checkBox property as it rippled through the list.
    BUT...it doesn't ripple through the list. There is only one instance of the CoreSelectBooleanCheckbox which appears to be shared by all the visible components.
    So ... I'm still stumped.

  • ADF Faces af:tree expand/collapse node

    Any help appreciated. Is there a way to specify in the tree model if you want a node expanded or collapsed? I am using the ChildPropertyTreeModel and TreeNodeImpl as the nodes. Can I add an additional property to the Tree Node?
    Thanks

    There isn't anything in the framework that lets you specify tree expansion state in the model. The frameword tries to preserve the abstraction between the model (which should only contain data) and the UI component (which handles expansion state).
    You can build a custom renderer for the tree where you can remember which paths from your model are expanded, and then set the expansion state of the tree programmatically by calling the UIXTree.setTreeState() method. It takes a set of paths, with each path corresponding to a path you want to be expanded.

  • ADF Faces af:tree

    Does anyone know where to find an example of a data bound tree?
    The static one here(http://www.oracle.com/technology/products/jdev/htdocs/partners/addins/exchange/jsf/doc/tagdoc/core/tree.html) isn't very helpful.
    Thanks.

    if you're redisplaying the same page, then the tree
    will automatically remember the expansion state.
    however, if you are returning to the page from some other page, then the tree would have reset.
    in order to preserve the expansion state of the tree, you need to use a managed-bean. set
    <tree binding="#{mybean.myTree}" ..>
    now, the setMyTree(UIComponent tree) method will be called
    on your bean.
    get the treeState from that:
    tree.getTreeState()
    and save it on your class.
    then you can set it on the tree on subsequent requests.
    make sure the scope of your managed bean is
    session

  • How to generate ADF Faces Tree from table ?

    Hi,
    i want to create menu for my application using ADF Faces af:tree component.i have one table containing : menu_id and parent_id , which use for describing relationship between menu ( parent/child ).
    Fact : i've already know how to create adf faces af:tree component from master/detail relationship tables.
    The question : how to create adf faces af:tree component from recursive master/detail relationship in one table ?
    to clearer understand my question,this is my MENU_DATA table script :
    CREATE TABLE MENU_DATA
    MENU_ID VARCHAR2(5 BYTE),
    DESCRIPTION VARCHAR2(50 BYTE),
    OPENLINK VARCHAR2(200 BYTE),
    PARENT_ID VARCHAR2(5 BYTE)
    this is what i mean recursive master/detail relationship ...
    ALTER TABLE MENU_DATA ADD (
    CONSTRAINT FK_PARENT_MENU_ID
    FOREIGN KEY (PARENT_ID)
    REFERENCES MENU_DATA (MENU_ID));
    Thanks a lot for help gurus...
    Ricky HP

    I have the same question on my mind...
    Without creating n (same number of level depth) VO, how can I build a recursive ADF Faces Tree ???

  • ADF Faces setParent() method

    Hi,
    I'm trying to build an ADF Faces component tree dynamically. In particular, I'm trying to add an HtmlRowLayout to an HtmlTableLayout.
    Although my code appears to run without throwing errors, the <TABLE> tag that gets generated is empty. I'm not sure, but I think it might have something to do with my mechanism of adding one component to the other.
    I've been calling
    myHtmlRowLayout.setParent(myHtmlTableLayout);Which sort of looks like it's working. The _parent property of myHtmlRowLayout is indeed getting changed. But it doesn't look like this actually adds the HtmlRowLayout to the HtmlTableLayout's _children list.
    Is there some method I have to call to "close up" the tree this way? I'd sort of expected that any process that would make X Y's parent would also make Y X's child.
    Edit:
    OK, I figured this out. It's not sufficient to call setParent() on the child, you have to explicitly add the child to the parent's list of children:
    myHtmlTableLayout.getChildren().add(myHtmlRowLayout);So, question: What does setParent() do? THis makes it look like you could have weird asymmetric parent/child relationships: Where the child of X is Y, but the parent of Y is not X. To be on the safe side, in my code I'm calling both, but is there a use case for calling one but not the other? If not, an ER: Could setParent() do everything required to set up a parent-child relationship between two components?
    Message was edited by:
    Avrom

    setParent() is a method from the JSF UIComponent class; if you want to find out what it does, check the Javadoc for JSF, which says:
    Set the parent UIComponent of this UIComponent. This method must never be called by developers; a UIComponent's internal implementation will call it as components are added to or removed from a parent's child List or facet Map.
    Always, just call getChildren().add() or getFacets().put(). NEVER call setParent().

  • How do I create multiple types of child nodes in ADF  Faces Tree Component

    Hi,
    I am trying to construct a tree using ADF Faces. The tree I am trying to develop should look something like:
    - Departments
    + Dept 10
    + Dept 20
    + Dept 30
    + Dept 40
    - Employees
    + SCOTT
    +ALLEN
    + BLAKE
    The nodes shown at the top level should serve as labels, indicating the various types of nodes available.
    I have created the top level RootLabelsViewObj, with a SQL clause:
    select rn, node_label
    from (
    select 1 rn
    , 'Employees' node_label
    from dual
    union all
    select 2 rn
    , 'Departments' node_label
    from dual
    union all
    select 3 rn
    , 'Bonusplans' node_label
    from dual
    I have created ViewLinks between the RootLabelsViewObj and the DeptView and EmpView respectively (created on top of DEPT and EMP table in SCOTT schema), based on the LABEL attribute in the RootLabelsViewObj and with ViewLink SQL specified like:
    :Bind_NodeLabel = 'Departments' for the link with DeptView and :Bind_NodeLabel = 'Employees' for the link with EmpView.
    In the ADF BC Application Module Tester, I get exactly what I want.
    However, when I create a JSF JSPX page and drag the RootLabelsViewObj from the Data Control Panel to the page as ADF Tree, I run into a little issue: it seems like I cannot create a second Branch Accessor rule for the RootLabelsViewObj1: I have created a first Branch Accessor Rule referring to DeptView and now try to create a second one for EmpView, to allow Employees to be displayed under the root label "Employees" - but I cannot.
    The PageDefinition looks like:
    <tree id="RootLabelsViewObj1" IterBinding="RootLabelsViewObj1Iterator">
    <AttrNames>
    <Item Value="Rn"/>
    <Item Value="NodeLabel"/>
    </AttrNames>
    <nodeDefinition DefName="model.RootLabelsViewObj"
    id="RootLabelsViewObjNode">
    <AttrNames>
    <Item Value="NodeLabel"/>
    </AttrNames>
    <Accessors>
    <Item Value="DeptView"/>
    </Accessors>
    </nodeDefinition>
    <nodeDefinition DefName="model.EmpView" id="EmpViewNode">
    <AttrNames>
    <Item Value="Ename"/>
    </AttrNames>
    </nodeDefinition>
    <nodeDefinition DefName="model.DeptView" id="DeptViewNode">
    <AttrNames>
    <Item Value="Deptno"/>
    </AttrNames>
    </nodeDefinition>
    </tree>
    Does anyone know:
    - whether it is possible (intended) to have more than one branch accessor per node (i.e. more than one type of child under a node in the tree)
    - if so, how this can be achieved?
    Right now it looks like I am limited to each node in the tree having only one type of child node.
    Please tell me I am wrong.
    best regards,
    Lucas

    Give this a shot mate
    event.getNativeEventTarget();That will allow you to access the DOM object directly
    Id can be retrieved via
    event.getNativeEventTarget().id;

  • URGENT: ADF Faces table updating issue.

    I have a project that uses JSF, ADF Faces, EJB 3.0, and the ADF binding framework.
    In this project, I have a page with a databound ADF Faces Table. The table has a number of read-only columns and two read-write columns. I also have an Edit button that allows the user to pop up a dialog box to edit the selected row of the table. When the user clicks OK in the dialog box, the data is passed back to the main page and the table is updated.
    Everything works correctly for the read-only columns. For the read-write columns, however, the table data does not get updated following an edit. This is what I have found:
    1. The table row data gets passed in to the Edit dialog correctly.
    2. The data gets passed back correctly.
    3. The model gets updated correctly (up to and including the database).
    4. Looking at the iterator in the debugger shows the correct, updated data.
    5. When the table row is getting redrawn, the getter calls for the read-write columns return the updated data.
    6. As mentioned above, the read-only columns get updated correctly.
    7. Updating the read-write columns directly from the table works correctly.
    So, the problem appears to be in the GUI layer. I suspect that, somehow, the submitted values of the read-write columns are not getting set properly, but I cannot figure out how to do this.
    Note that clicking on the Edit button results in a partial submit. In the return listener, I add a call to AdfFacesContext.getCurrentInstance().addPartialTarget(getRecipientTable()) in order to redraw the table (getRecipientTable() is the bound value of the ADF table).
    Please help! We are so close to production and we need to fix this.
    Thanks,
    Ara

    Hi,
    I don't have a testcase for this, so I just come up with ideas to try
    1. refresh the parent container of the table. It seems that the input text components are not triggered to refresh if the refresh is on the table.
    2. If using ADF, make sure the update is performed directly on theiterator (which automatically is the case if you use a ADF bound form for this)
    3. Check if executing the table iterator and then setting back the current row makes a difference
    Frank

  • Drag andn Drop facility in af:tree in ADF Faces

    Hi,
    I am exploring on the possibilities to get drag and drop feature working in an ADF Faces Tree element. Basically, I want to drag the nodes in the tree under other nodes within the same tree.
    I tried using some Javascript libraries to achieve the same.
    http://ajaxpatterns.org/Drag-And-Drop#In_A_Blink
    But it seems that ADF Faces generate the "Id" of the nodes of the tree by prepending some string like "_id1:" to the ID provided in the Property Inspector for the node stamp of the tree element. So, we cannot use those libraries either which rely on the node id of the elements.
    Does ADF Faces plan to introduce this drag and drop feature in the af:tree element.
    Any help will be highy useful.
    Thanks,
    Ankit Goel

    Hi Frank,
    Can we know as to when ADF is planning to bring the drag and drop feature in ADF Tree component. Also, we would want to get a handle to the node ids of the tree. We need this to implement some right click features on the tree nodes. Is this also considered in the new UI features project.
    Can we know of any page where all new upcoming features are listed, or we can request for any desired UI features. Please help.
    Thanks,
    Ankit

  • ADF Faces:  Tree & NodeStamp

    Hi,
    I would like to know what components are supported by faces "nodeStamp"
    in ADF Faces Tree?
    Thanks,
    A

    More information: You cannot use the var attribute to bind the SelectBooleanCheckbox because it is not a managed bean and you can only bind to managed beans. So I created a CoreSelectBooleanCheckbox property in the ThemeTreeTree class (which is a managed bean) with the intent of matching references to the checkBox property as it rippled through the list.
    BUT...it doesn't ripple through the list. There is only one instance of the CoreSelectBooleanCheckbox which appears to be shared by all the visible components.
    So ... I'm still stumped.

  • ADF Faces af:table partialTriggers update column footer

    I have table based on SortableModel (stored in session) with one column as input & other column as formula based on input field both as numeric.
    I have ValueChangeEvent on input field,which calculate new value for formula column. It is updated on page immediately. I am also computing summary for both column & store it sessionbean. But ValueChangeEvent does not update these values, I have to refresh page manually to see new totals. I have linked both the outputText field to inputText by partialTriggers property.
    If I move these outputText out of tablefooter they get updated immediately.
    I tried to link af:table & columns to inputText by partialTriggers but do not work.
    How I can update coulmn footer immediately if one of the field in table changed?
    Thanks, Yogesh
    -- Column footer : Does not update immediately
    <f:facet name="footer">
    <af:outputText value="#{PartyTableBean.newTotalBalance}"
    binding="#{backing_FinancialClose.newTotalBalance}"
    id="newTotalBalance" partialTriggers="newInvoiced">
    <af:convertNumber currencySymbol="$" type="currency"/>
    </af:outputText>
    </f:facet>
    -- outputText outside of table : updates immediately
    <af:outputText value="#{PartyTableBean.newTotalBalance}" id="newTotalBalance22"
    partialTriggers="newInvoiced" binding="#{backing_FinancialClose.outputText7}">
    <af:convertNumber currencySymbol="$" type="currency"/>
    </af:outputText>

    I was mistakenly believing that you couldn't use a selectOneChoice in an af:table given some experimentation where they simply failed to render at all.
    It turns out that I had a hadn'e created the appropriate setter method for the property. However, instead of making the data readOnly (as most of the ADF FACES controls do) it just didn't render anything. Thus making me think it just didn't work inside of a table.
    FYI - in case this happens to anyone else.

  • Emailing page contents as HTML using ADF faces

    I have created a JSPx page contaning ADF visualizations like tables, DVT charts, gauges etc. My application needs to send the content of this rendered page as email attachment . My application will provide an email editor where user can write some text as message and it needs to attach the contents of page having tables, charts etc as attachment to this email. How this can be achieved?
    using showPrintablePageBehaviour, opne my page in another browser window and from there user can copy paste the source of ths page into file and can send it as an email attachment. But I want this manual step of copy paste should not be there. Directly the page contents should be saved in html file. can this be achieved through some APIs?
    I have read that emaillable pages can be created declaratively, but need some info on creating that through APIs.

    The link to http://www.oracle.com/technology/products/jdev/101/howtos/adfskins/adffaces-skin.war
    seems to work for me.
    In any case to change the skin you are using you change the adf-faces-config.xml file.
    To get it to change at runtime - just put a reference to a value in a backing bean instead of the fixed "oracle" and then change the value in the bean at runtime.

Maybe you are looking for