ADF Faces - partial submit across subforms

Should it be possible to make a button a partialTrigger for a table in a different subform?
I have a textfield and commandButton in one subform, and an af:table in another subform.
Thanks
Martin

Actually I once read a Frank Nimphius entry about how to make this work, but the solution was somewhat unexpected. I think it had something to do with putting ":fieldid" in the partial triggers property value, rather than "subformid:fieldid". this was regarding 10.1.3 functionality though.
Check out Re: ADF Faces : partial page rendering in f:subview for commentary on this subject, if I am understanding the problem.
Also it is the first+_ entry in the word document downloadable here:  http://thepeninsulasedge.com/frank_nimphius/wp-content/uploads/2008/05/OldAndLostBlogBusterTips.zip
Edited by: Michael C. Fons on May 14, 2010 12:08 PM
Edited by: Michael C. Fons on May 14, 2010 12:12 PM

Similar Messages

  • ADF Faces : partial page rendering in f:subview

    hi
    Please consider this blog post, "ADF Faces: How-to issue a PPR event from a f:subview and how-to PPR of subviews" :
    http://thepeninsulasedge.com/frank_nimphius/2008/02/14/adf-faces-how-to-issue-a-ppr-event-from-a-fsubview-and-how-to-ppr-of-subviews/
    In this post, Frank Nimphius writes : "... PPR from a containing page to the subview - unfortunately - only works for the whole subview, which means that the included page is getting refreshed. Because the f:subview component does not support PR, you need to work with a wrapping ADF Faces container, like af:panelGroup ...".
    But, it looks like such partial page rendering in a subview can be done without a specific "wrapping ADF Faces container" like this ...
            <h:form id="firstPPRPageFormID">
              <af:panelPage title="firstPPRPage">
                <af:panelHeader text="components on firstPPRPage">
                  <af:panelForm>
                    <af:panelLabelAndMessage label="dateUtil.currentDateAsString, with partial trigger">
                      <af:outputText value="#{dateUtil.currentDateAsString}"
                                     partialTriggers="firstSubviewID:firstSubviewCButton"/>
                    </af:panelLabelAndMessage>
                    <af:panelLabelAndMessage label="dateUtil.currentDateAsString">
                      <af:outputText value="#{dateUtil.currentDateAsString}"/>
                    </af:panelLabelAndMessage>
                    <f:facet name="footer">
                      <af:commandButton text="firstPPRPage button"
                                        id="firstPPRPageCButton"
                                        partialSubmit="true"/>
                    </f:facet>
                  </af:panelForm>
                </af:panelHeader>
                <f:subview id="firstSubviewID">
                  <jsp:include page="/firstSubview.jspx" flush="true"/>
                </f:subview>
              </af:panelPage>
            </h:form>... and where firstSubview.jspx contains something like this ...
      <af:panelHeader text="components on firstSubview">
        <af:panelForm>
          <af:panelLabelAndMessage label="dateUtil.currentDateAsString, with partial trigger">
            <af:outputText value="#{dateUtil.currentDateAsString}"
                           partialTriggers=":firstPPRPageFormID:firstPPRPageCButton"/>
          </af:panelLabelAndMessage>
          <af:panelLabelAndMessage label="dateUtil.currentDateAsString">
            <af:outputText value="#{dateUtil.currentDateAsString}"/>
          </af:panelLabelAndMessage>
          <f:facet name="footer">
            <af:commandButton text="firstSubview button" id="firstSubviewCButton"
                              partialSubmit="true"/>
          </f:facet>
        </af:panelForm>
      </af:panelHeader>Note the value ":firstPPRPageFormID:firstPPRPageCButton" for the partialTriggers attribute.
    see http://verveja.footsteps.be/~verveja/files/oracle/PartialPageRenderingInSubview-v0.01.zip (check README.txt)
    questions:
    (1) Why exactly does this approach seem to work?
    (2) Because of question (1), what could be potential issues with this approach?
    regards
    Jan Vervecken

    Jan,
    good job ! I actually never thought of reversing what I said about PPR'ing a component from a subview.
    Actually
    partialTriggers=":firstPPRPageFormID:firstPPRPageCButton"/>
    works because the leading ":" makes ADF Faces to start the component search from the root container. Note that if you use af:form instead of h:form, the trigger is
    partialTriggers=":firstPPRPageCButton"/>
    I'll update my blog
    Frank

  • ADF button submits the whole page even on partial submit=true

    my jdev version 11.1.1.5.0
    I hav a jspx page with two input boxes and three select one choice and a clear button
    on clicking the clear button it subimts the whole page and fetches value for select one choice mapped to manage bean everytime even on putting partial subimt=true

    Two years ago I was confused by the same behavior, so I researched the problem to come eventually to the conclusion that everything had been fine and in accordance to the documentation.
    In brief, it is correct behavior a button to submit the whole page even if the button is configured as partialSubmit="true". Please, refer to these articles in the documentation for clarification:
    Using the JSF Lifecycle with ADF Faces - 11g Release 1 (11.1.1.7.0) ("4.3 Using the Opimized Lifecycle")
    Handling Events - 11g Release 1 (11.1.1.7.0) (See topic "5.1.1 Events and PPR" only)
    It is seen from the second article that command components (e.g. a command button, event type "action") are not event roots, which means that the whole enclosing page "boundary" is submitted. If the button is a part of a subform (<af:subform>), a region, a popup or a PanelCollection, then the boundary is the corresponding subform, region, popup or PanelCollection, so only this part of the page is submitted and processed by the optimized lifecycle. However, if the button is not part of such component, then the whole page is submitted and processed by the lifecycle (even if the button is configured as partialSubmit="true"), but only the partial targets of the button will be refreshed on the screen (if the button is configured as partialSubmit="true").
    If you want your button to submit only a part of the page, then the easiest correct way to do that is to surround that part with <af:subform>.
    Dimitar
    P.S. Input and selection components have different PPR behavior from command components. It is seen from the second article above that all the input and selection components are event roots (in contrast to command components!) (see event type "valueChange"), so if some input or selection component is configured as autoSubmit="true", it will not submit the whole page but only itself and the components configured as partial targets of it.

  • ADF FACES: af:subform not working

    I'm using EA13 and I'm trying to convert a page with multiple forms to using af:subform components and they don't appear to work. No matter which subform you post, the client side validations (in my case "required" tests) for all the forms are executing.
    Is af:subform supposed to work in EA13?

    Works for me! Could you try this simple page:
    <?xml version="1.0" encoding="iso-8859-1" standalone="yes" ?>
    <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="1.2"
              xmlns:f="http://java.sun.com/jsf/core"
              xmlns:af="http://xmlns.oracle.com/adf/faces/EA13" >
      <jsp:directive.page contentType="text/html;charset=utf-8"/>
      <f:view>
        <af:document>
          <af:form>
           <af:subform>
            <af:inputText required="true" label="Field 1"/>
            <af:commandButton text="Submit"/>
           </af:subform>
           <af:subform>
            <af:inputText required="true" label="Field 2"/>
            <af:commandButton text="Submit"/>
           </af:subform>
          </af:form>
        </af:document>
      </f:view>
    </jsp:root>

  • 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

  • Partial submit in a jsf fragment is not working

    Hi,
    i have a jsf page that is hosting a jsf fragment (using workflow), inside the jsf fragment i have a button that has partial submit = true, and an output text that has partial triggers pointing to the button.
    the button on the fragment page has a "set action listener" that update a variable in a managed bean.
    the output text on the fragment page is displaying the content of that variable (which the button is updating).
    the problem is that partial submit is not working and whenever the button is clicked and the value of the variable inside the managed bean is changed , it is not reflected in the output text.
    note that if you try to use this example in a normal JSF page it will work, so does anybody knows what is wrong.
    i'm using Jdeveloper 11.1.1.2
    ************************** source code of the jsf fragment page *********************************
    <?xml version='1.0' encoding='windows-1252'?>
    <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
    xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
    xmlns:f="http://java.sun.com/jsf/core">
    <af:commandButton text="commandButton 1" id="cb1" partialSubmit="true">
    <af:setActionListener from="#{not DepartmentInquiryBean.getterCriteriaPanelDisplayInd}"
    to="#{DepartmentInquiryBean.setterCriteriaPanelDisplayInd}"/>
    </af:commandButton>
    <af:outputText value="#{DepartmentInquiryBean.getterCriteriaPanelDisplayInd}" id="ot1"
    partialTriggers="cb1"/>
    </jsp:root>
    ************************** source code of the managed bean ************************************
    package Merch.Model;
    public class DepartmentInquiry {
    private boolean CriteriaPanelDisplayInd = true;
    public DepartmentInquiry() {
    public void setSetterCriteriaPanelDisplayInd(boolean p_CriteriaPanelDisplayInd) { 
    CriteriaPanelDisplayInd = p_CriteriaPanelDisplayInd;
    public boolean getGetterCriteriaPanelDisplayInd() {
    return CriteriaPanelDisplayInd;
    ********************************************************************************************

    Yes, try appending the region's id to the component inside that region.
    i.e.
    <af:outputText value="#{DepartmentInquiryBean.getterCriteriaPanelDisplayInd}" id="ot1"
    partialTriggers="r1:cb1"/>^ assuming 'r1' is your region's id.
    If your fragment is not inside a region...maybe try doing so.
    Also, see here:
    Referencing a component on a page fragment inside an <af:region>.
    Best of luck.
    Matthew.
    Edited by: Matthew Carrigy on 27/11/2009 10:42

  • View link refresh issue in a ADF Faces application

    ADF BC, ADF Faces, JDeveloper 10.1.3.3
    There is an example.
    I have an Entity SaleEntity and two view objects: SalesView (based on the SaleEntity) and ProductsView (read only). SaleEntity has an attribute productId to reference a product sold. SalesView and ProductsView are related by a view link. The link works fine in a Business Component Browser.
    Then I created a ADF Faces form to edit a sale. I used an af:selectInputText component for a productId:
    <af:selectInputText
        value="#{bindings.ProductId.inputValue}"
        label="#{bindings.ProductId.label}" 
        required="true"
        columns="6"
        action="dialog:ProductSearch"
        autoSubmit="true"
        valueChangeListener="#{CreateSaleBean.productId_valueChanged}" 
        tip="#{bindings.ProductsViewName.inputValue}">
      <af:validator binding="#{bindings.ProductId.validator}"/>
    </af:selectInputText>
    {code}
    User can enter productId directly or select a product from a LOV. I set a tip attribute of af:selectInputText to display a name of the current product. The tip uses ProductsView through the view link between SalesView and ProductsView. valueChangeListener is used here to make tip update right after partial form submit:
    {code:java}
      public void productId_valueChanged(ValueChangeEvent valueChangeEvent) {
        String prodId = (String) valueChangeEvent.getNewValue();  
        JSFUtils.setExpressionValue("#{bindings.ProductId.inputValue}", prodId);
        getIteratorBinding("SalesViewIterator").refresh(DCExecutableBindingDef.RC_REFRESH);
        getIteratorBinding("ProductsView").refresh(DCExecutableBindingDef.RC_REFRESH);
    {code}
    SaleEntity has a productId attribute validator to ensure that id of existing product was specified. The validator is implemented in the same way as ADF Developer Guide chapter "9.6.2 Implementing an Efficient Existence Check" describes.
    All this works fine when user enters correct productId - the new value is submitted and the tip is updated. But if user enters non existing productId - the tip doesn't change. It seems that detail view row currency doesn't change in that case. I want to make the tip empty when the provided productId is incorrect. Any ideas how to achieve this?
    Thanks,
    Marius                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

    Blaise,
    no I don't want to insert new product. I want make products view object have no current row.
    In addition product existence check code is in a sale entity. I don't think it is a good idea to have an entity object depending to some specific view object. Maybe I'm in the wrong.
    Marius

  • JDEV 10.1.3: Using "Create" binding on BC view object with ADF Faces Table

    Hello,
    I am trying to get this to work, but to no avail:
    I've got a very simple page (ADF Faces - JSPX) created by dragging an iterator from the data control pallete on to my page and picking "ADF Table..." as my chose to create. This creates a table on my page that allows me to edit each row in place. Very nice.
    Now, I dragged the create operation for that iterator on to the page. What I had hoped to see is that when I click "Create," a new blank row appears in my table (well, at least a row that is blank except for any default values specified in the EO/VO and my overriden create() method).
    However, this doesn't happen. The page submits and refreshes, but no blank row shows up. I initially tried setting the Create button to do partial submit and setting the partialtriggers for the table to include the Create button, to no avail. I also tried it without the partial submit with the same results.
    So:
    1). Should this work, or is this behavior a bug.?
    2). If not, is there a different/better way of doing it?
    Regards,
    John

    G'day John
    I think I can give you a hint of what is occuring... I'm still trying to work out what is happening exactly.
    In JDev 10.1.2 UIX, when the user invoked the create action, they would see the blank record added to the underlying table. Under 10.1.3 Faces the functionality is somewhat different.
    When you the user clicks on the create action a blank record is created but not shown in the table control. To prove the blank record is there try this:
    1) Build an ADF Input Form based on the same VO iterator
    2) In your JSF navigation, create a navigation case between the existing page and the new page, and another back again,
    3) In the existing page, map the Create button's action attribute to navigate to the ADF Input Form
    4) In the ADF Input Form, map the Submit button's action attribute to navigate to the ADF Table page.
    Now when you run your app, notice when you create a new record in the ADF Table which automatically takes you to the ADF Input Form, note the blank record, and the details you enter into the record here and submit, are then visible in the ADF Table on the return.
    This is a long way of proving that the new record is in the table. It's just you can't see it.
    I have a theory which I'm trawling through the newly updated documentation to verify. This issues goes back to the VO createRow vs insertRow method calls that have been documented by Steve Muench a couple of times. I'm guessing the table control is now smarter and doesn't show createRow records, only insertRow records.
    Read one of Steve's posts here regards the createRow vs insertRow method calls:
    http://www.oracle.com/technology/products/jdev/tips/muench/blankrow/index.html
    If I find anymore info I'll endeavour to post it.
    Meanwhile this of course doesn't help you if you actually want to show the blank row in the ADF Table editable control, but I'd thought I'd give you an idea of what's happening behind the scenes.
    Hope this helps.
    CM.

  • Hourglass on partial submit

    Hello,
    When I do a partial submit of a page, I get an hourglass for the cursor in un-used areas (no fields) of the page. It does not go away until I close the page. What typically would cause this to happen? I do have some partial triggers set up. I stepped through the debugger and found nothing pecualiar being aborted or causing errors.
    I am using JDeveloper 10.1.3.3.

    On the Oracle on-line help I found:
    The firstClickPassed attribute specifies a Boolean value for determining whether the first click is allowed to pass. By default this attribute is false. This means when a PPR request or event occurs, ADF Faces blocks all subsequent user input until the event completes. For example, if the user enters text in an inputText that fires a PPR request and then immediately clicks a submit button, two events are triggered—an onchange event followed by an onclick. The onchange event will trigger the client action that starts PPR blocking immediately; the onclick will get consumed by the blocking code and no submit will occur. If you want the submit event to occur, set the firstClickPassed attribute to true to allow the first click to go through.
    I set the firstClickPassed on the body tag to true and it still forces the user to click a button on the page twice to get the action to fire. Anybody with any ideas?

  • Partial triggers not Fired on partial submit when invalidate component

    Can somebody tell me why Partial triggers are not Fired on partial submit when invalidate component in the validator. Neither error message next to the component is displayed.
    Does somebody has an idea how can i solve this?
    Thank you very much in advance

    Hi, that is a test case which i have promised you:
    The .jspx page contains two fields , one of which has autosubmit = true; You will see, that when invalidate test field 2 partial triigers on field 1 are not fired neither faces message next
    to the field 2 appears.
    If you add programatically Field 1 and Field 2 partial trigerrs this solve the problem.
    I'm waiting for your response.
    Regards,
    Krasi
    <?xml version='1.0' encoding='windows-1251'?>
    <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:af="http://xmlns.oracle.com/adf/faces"
    xmlns:afh="http://xmlns.oracle.com/adf/faces/html">
    <jsp:output omit-xml-declaration="true" doctype-root-element="HTML"
    doctype-system="http://www.w3.org/TR/html4/loose.dtd"
    doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"/>
    <jsp:directive.page contentType="text/html;charset=windows-1251"/>
    <f:view>
    <afh:html>
    <afh:head>
    <meta http-equiv="Content-Type"
    content="text/html; charset=windows-1251"/>
    <title>pprTest</title>
    </afh:head>
    <afh:body>
    <af:form>
    <af:panelLabelAndMessage label="Test Field 1">
    <af:outputText binding="#{testBean.testField1Comp}"
    partialTriggers="testField2"/>
    </af:panelLabelAndMessage>
    <af:inputText label="Test Field 2"
    id="testField2"
    autoSubmit="true"
    binding="#{testBean.testField2Comp}"
    partialTriggers="testField2"
    validator="#{testBean.testField2_validator}" />
    </af:form>
    </afh:body>
    </afh:html>
    </f:view>
    </jsp:root>
    import javax.faces.application.FacesMessage;
    import javax.faces.component.UIComponent;
    import javax.faces.context.FacesContext;
    import oracle.adf.view.faces.component.UIXInput;
    import oracle.adf.view.faces.component.core.input.CoreInputText;
    import oracle.adf.view.faces.component.core.output.CoreOutputText;
    import javax.faces.application.FacesMessage.Severity;
    public class TestBean {
    private CoreOutputText testField1Comp;
    private CoreInputText testField2Comp;
    public TestBean() {
    public void testField2_validator(FacesContext facesContext,
    UIComponent uiComponent, Object value) {
    // If input equals "invalidate" set value of the
    // testField1Comp on "Component is invalid"
    // Invalidate input and add an error message
    if (((String)value).equals("invalidate")) {
    testField1Comp.setValue("Component is invalid");
    invalidateInput( (UIXInput)uiComponent,"TestField2","Test Field 2 is invalid!");
    // If input not equals "invalidate" set value of the
    // the testField1Comp on "Component is valid"
    else{
    testField1Comp.setValue("Component is valid");
    //Dynamic adding of the partial targets , solves the problem
    // with losing of partial triggers
    //AdfFacesContext.getCurrentInstance().addPartialTarget(testField1Comp);
    //AdfFacesContext.getCurrentInstance().addPartialTarget(uiComponent);
    public void setTestField1Comp(CoreOutputText testField1Comp) {
    this.testField1Comp = testField1Comp;
    public CoreOutputText getTestField1Comp() {
    return testField1Comp;
    public void setTestField2Comp(CoreInputText testField2Comp) {
    this.testField2Comp = testField2Comp;
    public CoreInputText getTestField2Comp() {
    return testField2Comp;
    public static void invalidateInput(UIComponent uiComp,String compName, String message) {
    showErrorMessage(uiComp , message);
    if (uiComp instanceof UIXInput){
    ((UIXInput) uiComp).setValid(false);
    public static void showErrorMessage(UIComponent component, String message) {
    showMessage(component, message, FacesMessage.SEVERITY_ERROR);
    private static void showMessage(UIComponent component, String message, Severity severity) {
    String compId = component.getId();
    FacesContext ctx = JSFUtils.getFacesContext();
    FacesMessage facesMessage = new FacesMessage(
    severity, component.getId() , message);
    ctx.addMessage(compId,facesMessage );
    }

  • CommandButton Partial submit not working within table

    I have two buttons that basically update a table I have printed out. The code is:
    <h:outputText value="FinCen Case Number"/>               
    <h:panelGrid columns="3">
    <af:inputText value="#{caseCommonInfoAction.finCenToAdd}" partialTriggers="addFinCenButton"/>
    <af:commandButton text="Add >>>" id="addFinCenButton" partialSubmit="true" action="#{caseCommonInfoAction.processSaveNewFinCenNumber}"/>
    <af:table var="finCenCaseNumber" banding="column"               value="#{caseCommonInfoAction.finCenCaseList}" partialTriggers="addFinCenButton deleteFinCenButton">
    <af:column>
    <h:outputText value="#{finCenCaseNumber.fincenCaseNumber}"/>
    </af:column>
    <af:column>
    <af:commandButton text="Delete" id="deleteFinCenButton" partialSubmit="true" action="#{caseCommonInfoAction.processDeleteFinCenNumber}">
    <f:param name="finCenToDelete" value="#{finCenCaseNumber.fincenCaseNumber}"/>
    </af:commandButton>
    </af:column>                                                  
    </af:table>
    </h:panelGrid>
    I apologize for the formatting, but copying over as well as hard coding the spaces still makes this forum ignore them. My real problem is that the table does not update when I press the "Delete" button. I did, however, tell the table to use deleteButton's id in partialTriggers.
    At first I thought partialTriggers="addFinCenButton deleteFinCenButton"> was incorrect, so I changed it to partialTriggers="deleteFinCenButton"> and it still doesn't work. The actions I have listed are working correctly (I can hit a save button I have and then refresh the page and the item I wanted to delete is actually deleted).
    Anyone have any thoughts?

    User,
    I think this is a common problem, probably a bug. It works fine if you manually enque the appropriate partial submit stuff.
    See this thread: Re: ADF Faces: PPR and Dialog framework in particular Ric Smith's reply. Poke around on Ric's blog for some code like this:
    AdfFacesContext afContext = AdfFacesContext.getCurrentInstance();
            afContext.addPartialTarget(handler.getTable1());
            afContext.partialUpdateNotify(commandButton11);hope this helps,
    John

  • EJB 3.0 / Data control binding / ADF Faces

    We have a great and very useful tool to generate rich client web application. Generate web component from a data structure is easy but manage the full life cycle is a little bit more complex. This complexity is dramatically increased when tool/platform are offering many models to solve the problem.
    In JDev we have three major choices:
    1) adf business components
    2) top link pojo
    3) ejb3.0
    From the client side and in my point of view (at my current understanding) the first and second choice are the easiest way to manage the persistence because they are what i say "bidirectional", that mean i will use the same data structure to persist and synchronize the database. I may only calll a method from the object to put my changes from the midle-tier into the database.
    EJB 3.0 seem to be more cormplex due essentially to the presence of the session bean that acts like conversational api. I like this architecture because it is the most flexible but from my client i have to manage these api's instead of one data structure. This mean for me to catch/detect every updates, new insert or deletes in my business object and to write the corresponding code to apply to correct entity bean methods from my session bean.
    Why not manage this logic in the data control framework by declaring which methods are to use as finder to get the data and which methods are to used to manage the persistence (persist, merge, remove) at object level.

    Exactly what i mean
    Actually Data Control architecture seem to be business object oriented with native method called from the same object to retrieve (the most part done)/synchronize the data with the database.
    This is fine than your architectue don't provide a service layer like session facade.
    With session facade you will access different business method to retrieve data and synchronize you data with the database not different method from the same object like application module do in adf bc.
    I see two solution, the best is that you extend the data control framework to offer standard crud operation and a tools to map these with one or many methods in the same (has to be the same?this is a question of architecture, i think it has to be the same but the framework may have to permit to use an another one for flexibility) session bean. This may be the same from adf bc or top link but the method may be selected automatically by the tool (wizard).
    The second solution is to build specialized sesssion bean with mandatory standardized methods and map this directly in the framework. The advantage i see is that the updates may be collected only once by the session bean by passing a specialized object manipulated by a specialized method.
    In fact the best solution is something that combines mapping in the data control and a specialized set of methods in the session bean to execute a transaction in a whole at the server level.
    What is to be decided if the framework (data control part) has to maintain a status for attribute (or set of attribute that correspond to a data control node) that are new inserted, updated or deleted and to synchronize only the changes.
    I'm very surprising that something like that it is not already in the framework ?
    How do I have to take care of changes made in a data control node object when i have used it to generate an adf faces by example in master / detail pages with an edit form like in otn examples. I see that the detail list in the detail table is updated so the data control is updated correctly by the edit form when i submit the changes but how to finally get this changes and synchronize with the database ?
    ps i reply previously by mistake by email sorry ... not that the email is not exactly the same as the post here
    Michel

  • Message bundle, replace default "Required" message in ADF faces

    Hello,
    I hope i can ask some ADF faces questions here,
    I am trying to replace the default msg that adf faces give for different components
    I successfully created a resource properties file which includes 2 msgs, one is to replace the default value given to required msg, and other is just a msg i will use for one of my buttons.
    oracle.adf.view.faces.UIXEditableValue.REQUIRED=Enter number please
    button_name=Submit
    I specify this bundle in my application node in my faces config file.
    I also load it with loadbudle component in the page that i want to use it.
    now i can call my second msg "button_name" fine from with in the page, so I know that I have my file set up correctly,
    but the first msg, which is the key for the required msg, does not work
    em i missing something??
    is there a different setup when trying to override msgs.
    Thank you

    I found a solution,
    I hope there is a better one,
    What i did is a got the source for ADF faces found the XML file where all the msgs are located (MessageBundle.xrts). Then using a tool that comes with the source files XRTSMakeBundle, I compiled the XML file, and it created java files with all the msgs. So I compiled them and replaced the classes in the ADF faces api jar.
    this seems like a long work around, in JSF RI, all you have to do is extend the key in the resource bundle and poof it works, I couldn't get that working here.
    This works, seems like a lot of work for a simple task!!!
    any other solutions out there????

  • Equivalent of JSTL / JSF variables in ADF Faces

    Is there any equivalent of JSTL core variables <c:set property="" value="" /> in ADF faces? ...The problem with those JSTL variables are they are immediate expressions ($) and they cannot be used with EL expressions in ADF component properties, as they deal with {# defered}..We have <f:attribute> which we add that to any component, but can retrived only using from backend code when any events are generated. like event.getComponent().getAttributes()....
    I am looking for some declarative attribute which holds some value within jsff page fragment....(not the one like managed bean attribute)

    Yes, We can use keep the variable in viewScope....But how do you define any variable in jsff declaratively in that viewScope (not using any backing bean method) .....if you see <c:set > you can define that in page and use it across.....I cant use property listener or action listener ..as i can set these values only on invoking certain action on a component....i want to set them based on certain condition like using c:if and not on some action...I dont see any way other than using some backing bean and binding with some property and setting some value...

  • ADF Faces (Trinidad?) & Facelets Support

    This is long, but help and advice is very much needed.
    My programming team is facing a migration from UIX to JSF (ADF Faces) for future applications and we have hit a road block in regards to a template structure that is easy to use and maintain. We had gone through official Oracle training with JSF, however the trainer's answer to templates was to "create a template and copy and paste for every new file". For our team this is unacceptable so I've been charged with figuring out how to simply templates for our team. Not only do we need to make this easy for our application developers but we need to keep it simple for web developers to create "simple" survey-like applications.
    From what I've come across the answers seems to be either Facelets or Regions.
    Working with Regions seem to be over-complicated, requiring too much replication (basically back to copy/pasting an entire template) or passing the panelPage's content as a java object (bad for our web developers). I presented the combinations to my team and supervisor and it was agreed that Regions are impractical for our development practices.
    So it seems the answer is with Facelets. The problems I have with this is that:
    1. JDeveloper doesn't appear to natively handle Facelets, or include the libraries.
    2. From what I've learned, the ADF Faces library that comes with JDeveloper doesn't have Facelets support either.
    3. Looking into Trinidad, Facelets support exists but there is a lack of the Oracle skin.
    Facelets support is really what my team needs, as it's the closest thing to the old UIX templates I've seen so far.
    I've followed instructions/examples on several posts here, but I've yet to come across an example that works. I've Googled countless pages and examples, but when it comes down to ADF Faces and Facelets, it seems I'm at a dead end.
    So, can anyone help me with this?
    Thanks in advance,
    Rick
    PS:
    Using JDeveloper 10.1.3.2.0.4066 with stock ADF Faces
    External libraries used:
    Facelets 1.1.11
    Trinidad 1.0.1-incubating

    It just so happens that not long after I posted, I catch the "adf-facelets.jar" on the facelets site.
    dvohra, I had seen the links you've pasted however none of them described the actual process to get it to work, it's all been segmented copy/paste instructions. This doesn't really help someone who is struggling.
    So... I'll paste what my solution was, hopefully this will help others:
    1. Download and install the Facelets 1.1.11 library
    https://facelets.dev.java.net/servlets/ProjectDocumentList?folderID=3635&expandFolder=3635&folderID=0
    2. Download and install the ADF Facelets library
    https://facelets.dev.java.net/servlets/ProjectDocumentList?folderID=3990&expandFolder=3990&folderID=0
    3. In web.xml add the following:
    <context-param>
    <param-name>oracle.adf.view.faces.ALTERNATE_VIEW_HANDLER</param-name>
    <param-value>com.sun.facelets.FaceletViewHandler</param-value>
    </context-param>
    4. Make sure your project's libraries have loaded your Facelets and ADF Facelets, as well as ADF Faces Runtime.
    5. Begin using UI Components as desired.
    Example: http://eugeneciurana.com/pastebin/pastebin.php?show=1308
    Extra notices:
    I had to comment out the following in my faces-config.xml as it conflicted with the web.xml setting:
    <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
    This is what worked for me, I hope this helps others out there.
    Thanks,
    Rick

Maybe you are looking for

  • Problem with logging in to BW after installation finished

    Hi all, I've a problem with logging in to my BW after i've finished installing it. First, i'd add that my system is a standalone server. the GUI and the Froentend are already installed on the server. I'm trying to login the BW from the server. After

  • Varray, Nested Table and Object types in OWB r2

    Requirement: Flat file with repeating groups of nested content need to move into Object Relational ORACLE table (using varray or nested tables - no preference). The data will be loaded, then mapped/transformed into a richer O-R output to directly pro

  • How the Screensaver is set in Nokia N72?

    How to set the Screensaver in N72. I have downloaded the screensaver from net But i'm not able to set it. Please tell me how to set...... And same about the Theams also? Thanks in advance...........

  • To get return back to stock for unconsumed material once already issued

    Dear Team, Can you share if user already taken the issue for the reservation fully and suppose some of quantities not not issued and want to return again back to stores then what would be the best practice ,pl can share your opinion.. Thanks, Dharmve

  • Creating a Blinker

    I have an applet with 4 buttons that I am trying to get to flash randomly after the start button (jButton1) is pressed. All I am doing is changing the background color of the buttons and trying to put in a timer before it changes colors again. EG->