Flipkart Search

Showing posts with label oracle adf. Show all posts
Showing posts with label oracle adf. Show all posts

Tuesday, 27 January 2015

Precaution while using javascript in a page fragment or in ADF region

Don't include javascript in the page Fragment just after the jsp:root tag . It will cause undesired effects if this page is navigated from somewhere else.
This will be a wrong approach for a jsff page
<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:resource type="javascript" source="/js/custom.js"/>

The right approach is to include this resource component inside a  container component . Like this
<af:panelFormLayout>
  <af:resource type="javascript" source="/js/custom.js"/>
</af:panelFormLayout> 

Tuesday, 13 January 2015

ADF Performance Tuning part-1 - Production tuning


  1. animation-enabled=false in trinidad-config.xml file
  2. in web.xml file do the following changes if not done already
    1. oracle.adf.view.rich.automation.ENABLE=false
    2. oracle.adf.view.rich.ASSERT_ENABLED=false
    3. org.apache.myfaces.trinidad.CHECK_FILE_MODIFICATION=false
    4.  org.apache.myfaces.trinidad.COMPRESS_VIEW_STATES=true
    5. org.apache.myfaces.trinidad.DEBUG_JAVASCRIPT=false
    6. org.apache.myfaces.trinidad.DISABLE_CONTENT_COMPRESSION=false
    7. oracle.adf.view.rich.libraryPartitioning.DISABLED=false 
    8. oracle.adf.view.rich.LOGGER_LEVEL=false
    9. javax.faces.STATE_SAVING_METHOD=client 
    10. oracle.adf.view.rich.versionString.HIDDEN=true

  3.  Use the ADFLogger
  4. Don't use System.out.* or System.err.* - These have major impact on performance
  5. Remove commented out code
  6. Do not import view or controller classes
  7. Close callableStatement, preparedStatements and RowSetIterators
  8. Use application module JDBC data source only not  JDBC URLs.
  9. Run with Enable Application Module pooling on for production .
  10. Define at least one entity object key attribute per entity object.
  11.  Ensure entity object UI Hints and messages are internationalized
  12. Avoid read only view objects as far as possible
  13. Use view criteria over editing view object where clauses
  14. Never use view object select *
  15. Limit custom code in bean accessors -ie. in getters and setters
  16. Use beans only defined in the task flow for reuse 
  17. Avoid applicationScope and sessionScope variables
  18. Define applicationScope and sessionScope beans in adfc-config.xml
  19. Only create backing beans when actually needed, do not bind unnecessary component references into backing beans.
  20. Avoid long component ID lengths.
  21. Avoid unnecessary use of clientComponent=true
  22. Use rendered=false over visible=false wherever possible.
  23. Never rely on UI side validation.
  24. Avoid inline page/fragment JavaScript and CSS
  25. Manual tests for UIs should include stretch / shrink behavior.
  26. Manual tests for UIs should include changing font size[Zoom-in and Zoom-out testing]
  27. url.rewriting.enabled should be false in weblogic.xml
  28. Make sure jbo.debugoutput  is disabled for production
  29. Make HA available. Add this entry in adf-config.xml file
  <adf-controller-config xmlns="http://xmlns.oracle.com/adf/controller/config">
    <adf-scope-ha-support>true</adf-scope-ha-support>
  </adf-controller-config>



Tuesday, 30 December 2014

Merge two Columns into one column while showing data Seperately

Use case scenario:  You may need to show your two column header as well as data into a single ADF Table column. 
Please refer the below image for use case:

ADF has made this use case very simple.
You have just wrap your existing(required) Columns into a single column and its done.

Here is the required code sample:
 <af:column headerText="Emplyee Name"  id="c5" align="center">
          <af:column headerText="First Name" id="c8">
                     <af:outputText value="F_Name #{vs.index+1} " id="ot6"/>
          </af:column>
          <af:column headerText="Last Name" id="c9">
                    <af:outputText value="L_Name #{vs.index+1}" id="ot5"/>
          </af:column>
 </af:column>

Monday, 22 December 2014

Insert new row at the end of an ADF Table

In some of case you may want to insert a new row at the end of the table then this method will come handy.

 public String CreateInsert() { 
DCBindingContainer bindings = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
        DCIteratorBinding dcIterBind =
            (DCIteratorBinding)bindings.get("EmployeeView1Iterator");
        Row newRow = dcIterBind.getViewObject().createRow();
        newRow.setNewRowState(Row.STATUS_INITIALIZED);
        ViewObject vo = dcIterBind.getViewObject();
        vo.last();
        // to insert row at the end of the table
        vo.next();
        vo.insertRow(newRow);
        return null; 

}

Wednesday, 26 November 2014

Useful shortcut keys for Jdeveloper and Oracle ADF

Here are few Jdeveloper shortcuts that can come handy while development [ mostly for Jdev 12c }
  1. Surround with popUp :  ALT+Shift+Z
  2. System.out.println(); : sop+Ctrl+Enter

JSF Lifecycle in short

  1. JSF Restore View: First phase receives the page request from JSF servlet and attempts to find and restore server side components state (A set of server side memory objects that builds the server side hierarchical page structure.). If view can't found as identified by requested view id , a new view is created on the server and the current page's view is stored in FacesContext static object.
  2. Apply request values: The requested values are read and converted to the data type requested by underlying model attributes. The values are accessed from UI components submitted values and passed to local value. When an input component's immediate attribute is set to true, its component validation is performed and component's listeners are executed within this phase. This is one of two phases in which page navigation can occur.
  3. Process Validation: Components are validated for missing data. At the end of this phase value change events are fired.
  4. Update Model Values: Model is updated with the validated value of UI components local values. Then local values of UI components are discarded.
  5. Invoke Application: During this phase , all application level events such as Form Submits are executed. This phase also executes a view layer logic that is stored in action listeners. Page navigation can occur in this phase.
  6. Render Response: Prepares the page view for display on client (Browser). If page view is called for first time, then restore view phase directly passed control to this phase.

Monday, 3 February 2014

HTML Formatting / Styling in ADF outputText

HTML Formatting in outputText (Escape Attribute)


For applying styling to some of the content, outputText's escape attribute could be used. Example:-

<af:outputText value="&lt;h2>ADF Tips and Tricks&lt;/h2>"/>
<af:outputText value="&lt;h2>ADF Tips and Tricks&lt;/h2>"
               escape="false"/>

Output
<h2>ADF Tips and Tricks</h2>
ADF Tips and Tricks

Note: You should avoid setting the escape attribute to false unless absolutely necessary. outputFormatted  component is more recommended in such cases.


Thursday, 26 December 2013

Normal Pop up implementation in ADF

import org.apache.myfaces.trinidad.util.Service;


FacesContext fctx=FacesContext.getCurrentInstance();
       ExternalContext ectx=fctx.getExternalContext();
//      ectx.redirect("test1.jspx"); // to open in same tab
       ExtendedRenderKitService erks =
       Service.getService(fctx.getRenderKit(), ExtendedRenderKitService.class);
       String url = "window.open('" + "
reports.jspx" + "','\"_self\"','\"toolbar=yes,scrollbars=yes,resizable=yes,top=500,left=500,width=600,height=500\"');";
       erks.addScript(FacesContext.getCurrentInstance(), url);
       ///code to open reports in pop up///

Saturday, 20 April 2013

logout in oracle ADF / expiring session in ADF

One of the way of logging out user is ::

public String logout() throws IOException {
    ExternalContext ectx=FacesContext.getCurrentInstance().getExternalContext();
HttpServletResponse resp = (HttpServletResponse)ectx.getResponse();
HttpSession sess = (HttpSession)ectx.getSession(false);
sess.invalidate();
  resp.sendRedirect("login.jspx");
return null;
}

Sunday, 3 March 2013

get user's details / Browser's details in Oracle ADF

        RequestContext rCtx = RequestContext.getCurrentInstance();
        FacesContext fctx=FacesContext.getCurrentInstance();
        Agent agnt = rCtx.getAgent();
  1.         //Get user's Browser's engine name
        String browser = agnt.getAgentName();

     2.   //Get user's Browser's engine version
        String browser_version = agnt.getAgentVersion();

    3. //Get user's IP address
        String userIpAddress =                      ((HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest()).getRemoteAddr();
     4.   //Get user's Platform
        String platform = agnt.getPlatformName();
      
      5. //Get user's Platform's version
        String platformVersion = agnt.getPlatformVersion();
        Map reqHeader=
FacesContext.getCurrentInstance().getExternalContext().getRequestHeaderMap();
     6. // Get the User agent
 System.out.println(reqHeader.get("User-Agent"));

Sunday, 25 November 2012

Static list in ADF the other way

The manage bean property of ADF can also provide the static list without a actual managed Bean{Interesting ??}. Let's do with an Example.
Inside your adfc-config.xml or your page-flow.xml register this list as below

  <managed-bean id="__3">
        <managed-bean-name>StaticBean</managed-bean-name>
        <managed-bean-class>java.util.HashMap</managed-bean-class>
        <managed-bean-scope>application</managed-bean-scope>
        <map-entries>
            <map-entry>
                <key>rahulkaitian</key>
                <value>http://rahulkaitian.blogspot.in</value>
            </map-entry>
            <map-entry>
                <key>rahulkumar07</key>
                <value>http://rahulkumar07.blogspot.in</value>
            </map-entry>
        </map-entries>
    </managed-bean>







and access the pair  in EL as #{StaticBean['rahulkaitian']}