Defaulting search fields in af:query component

I have a search popup with af:query and a result table. My requirement is to default some of the fields in af:query when the popup launches.
Since i could not achieve this, i wrote a temporary work around which should be removed as soon as we find a permanent solution.
Work around:
1. Wrote a method showQBE() in the bean. Wrote the logic to default the QBE fields by manually iterating through the component binding.
2. Call showQBE() in the visible property of the af:query so that this executed when the popup is invoked.
public boolean showQBE(){
RichQuery rq = this.getResourcePickerQBE(); // Bindning for QBE
QueryDescriptor dq = rq.getValue();
List children = rq.getChildren();
Iterator childrenItr = children.iterator();
while (childrenItr.hasNext()) {
RichPanelGroupLayout rpcl = (RichPanelGroupLayout)childrenItr.next();
Iterator rpclItr = rpcl.getChildren().iterator();
while (rpclItr.hasNext()) {
// RichPanelLabelAndMessage
UIComponent rplm = (UIComponent)rpclItr.next();
Iterator rplmItr = rplm.getChildren().iterator();
while (rplmItr.hasNext()) {
UIComponent comp = (UIComponent)rplmItr.next();
Iterator compItr = comp.getChildren().iterator();
while (compItr.hasNext()) {
UIComponent comp1 = (UIComponent)compItr.next();
String class2 = comp1.getClass().getSimpleName();
if (class2.equals("RichInputText")) {
RichInputText rit = (RichInputText)comp1;
if ("value40".equals(rit.getId()) ||
"value41".equals(rit.getId())) {
rit.setValue("Bryan");
} else if ("value50".equals(rit.getId()) ||
"value51".equals(rit.getId())) {
rit.setValue(ADFUtil.evaluateEL("Adams"));
} else
rit.setValue("");
AdfFacesContext.getCurrentInstance().addPartialTarget(rit);
Popup code:
<af:popup id="resourceSearch1"
popupFetchListener="#{backingBeanScope.TerritoryProfileBean.showParentTerrOwnerReportsForTerrTeamMember}"
binding="#{backingBeanScope.TerritoryProfileBean.resourcePickerPopup}"
popupCanceledListener="#{backingBeanScope.TerritoryProfileBean.cancelButtonListener}"
contentDelivery="lazyUncached" childCreation="deferred">
<af:dialog id="d20" type="none" title="#{salesterrmgmtterritoriesuiGenBundle}">
<af:panelGroupLayout id="pgl191" layout="vertical">
<af:panelHeader id="ph21" text=" ">
<af:query id="qryId2" headerText="#{applcoreBundle.QUERY_SEARCH_HEADER_TEXT}" disclosed="true"
value="#{bindings.ResourcePickerSearchQuery.queryDescriptor}"
model="#{bindings.ResourcePickerSearchQuery.queryModel}"
queryListener="#{backingBeanScope.TerritoryProfileBean.onSearchBtn}"
saveQueryMode="hidden" resultComponentId="::t3"
binding="#{backingBeanScope.TerritoryProfileBean.resourcePickerQBE}"
visible ="#{backingBeanScope.TerritoryProfileBean.showQBE}"
queryOperationListener="#{backingBeanScope.TerritoryProfileBean.queryOperationListener}"/>
</af:panelHeader>
<af:panelStretchLayout id="psl2" startWidth="50px"
visible="#{backingBeanScope.TerritoryProfileBean.showSearchTable}">
<f:facet name="bottom"/>
<f:facet name="center">
<af:table value="#{bindings.ResourcesPicker.collectionModel}"
var="row"
rows="#{bindings.ResourcesPicker.rangeSize}"
emptyText="#{bindings.ResourcesPicker.viewable ? applcoreBundle.TABLE_EMPTY_TEXT_NO_ROWS_YET : applcoreBundle.TABLE_EMPTY_TEXT_ACCESS_DENIED}"
fetchSize="#{bindings.ResourcesPicker.rangeSize}"
rowBandingInterval="0"
selectionListener="#{bindings.ResourcesPicker.collectionModel.makeCurrent}"
rowSelection="multiple" id="t3"
binding="#{backingBeanScope.TerritoryProfileBean.resourcePickerTable}"
contentDelivery="immediate"
columnSelection="multiple" autoHeightRows="10"
summary="#{salesterrmgmtterritoriesuiBundle.THIS_TABLE_LISTS_THE_RESOURCES}">
<af:column sortProperty="ResourceName" sortable="true"
headerText="#{bindings.ResourcesPicker.hints.ResourceName.label}"
id="c3" rowHeader="unstyled">
<af:inputText value="#{row.bindings.ResourceName.inputValue}"
label="#{bindings.ResourcesPicker.hints.ResourceName.label}"
required="#{bindings.ResourcesPicker.hints.ResourceName.mandatory}"
columns="#{bindings.ResourcesPicker.hints.ResourceName.displayWidth}"
maximumLength="#{bindings.ResourcesPicker.hints.ResourceName.precision}"
shortDesc="#{bindings.ResourcesPicker.hints.ResourceName.tooltip}"
id="it6">
<f:validator binding="#{row.bindings.ResourceName.validator}"/>
</af:inputText>
</af:column>
<af:column sortProperty="PrimaryPhoneNumber" sortable="true"
headerText="#{bindings.ResourcesPicker.hints.PrimaryPhoneNumber.label}"
id="c6">
<af:inputText value="#{row.bindings.PrimaryPhoneNumber.inputValue}"
label="#{bindings.ResourcesPicker.hints.PrimaryPhoneNumber.label}"
required="#{bindings.ResourcesPicker.hints.PrimaryPhoneNumber.mandatory}"
columns="#{bindings.ResourcesPicker.hints.PrimaryPhoneNumber.displayWidth}"
maximumLength="#{bindings.ResourcesPicker.hints.PrimaryPhoneNumber.precision}"
shortDesc="#{bindings.ResourcesPicker.hints.PrimaryPhoneNumber.tooltip}"
id="it10">
<f:validator binding="#{row.bindings.PrimaryPhoneNumber.validator}"/>
</af:inputText>
</af:column>
<af:column sortProperty="EmailAddress" sortable="true"
headerText="#{bindings.ResourcesPicker.hints.EmailAddress.label}"
id="c5">
<af:inputText value="#{row.bindings.EmailAddress.inputValue}"
label="#{bindings.ResourcesPicker.hints.EmailAddress.label}"
required="#{bindings.ResourcesPicker.hints.EmailAddress.mandatory}"
columns="#{bindings.ResourcesPicker.hints.EmailAddress.displayWidth}"
maximumLength="#{bindings.ResourcesPicker.hints.EmailAddress.precision}"
shortDesc="#{bindings.ResourcesPicker.hints.EmailAddress.tooltip}"
id="it1">
<f:validator binding="#{row.bindings.EmailAddress.validator}"/>
</af:inputText>
</af:column>
</af:table>
</f:facet>
</af:panelStretchLayout>
</af:panelGroupLayout>
<f:facet name="buttonBar">
<af:group id="g41">
<af:commandButton actionListener="#{backingBeanScope.TerritoryProfileBean.onApplyOrDoneFromResourcePicker}"
id="cmdDone1" immediate="true"
partialSubmit="true"
text="#{acrGenBundle}">
<af:resetActionListener/>
</af:commandButton>
<af:commandButton id="cb5" actionListener="#{backingBeanScope.TerritoryProfileBean.cancelButtonListener}"
text="#{acrGenBundle}"/>
</af:group>
</f:facet>
</af:dialog>
</af:popup>
* I created the same thread ADFbc forum: http://myforums.oracle.com/jive3/thread.jspa?threadID=632625. Since there is no response posting here.
Thanks

The af:query is based on a View Criteria from a PVO, so i wrote the following code to set the value for the criteria items in the View criteria.
I wrote it in view object's getter in the AMImpl.java
public ResourcePickerVOImpl getResourcePicker(){
ResourcePickerVOImpl vo = findViewObject("ResourcesPicker");
ViewCriteria vc = (ViewCriteria)vo.getViewCriteria("ResourcePickerSearch");
ViewCriteriaManager vm = vc.getViewCriteriaManager();
Row rows[] = vc.getAllRowsInRange();
for(Row row : rows){
List<ViewCriteriaItem> cit = ((ViewCriteriaRow)row).getCriteriaItems();
Iterator<ViewCriteriaItem> itr = cit.iterator();
while(itr.hasNext()){
ViewCriteriaItem vtr = itr.next();
vtr.setValue("Mathew");
System.out.println("Column name: " + vtr.getColumnName() + " Value: " + vtr.getValue());
I changed the contextDelivery = immediate and childrenCreation = immediate since the popup was always showing empty search fields.
After changing this property i am seeing a new issue -> First time when i open the popup nothing is shown in the search fields. Then from the subsequent times it is showing the values defaulted through the above code.
Any idea!
Edited by: [email protected] on Aug 26, 2010 4:30 AM

Similar Messages

  • Add custom field to af:query component?

    Anyone had any experience overriding af:query copmonent? I need to add my custom search field (to query component), which would have a search icon next to it, and on click, a popup widow would open containing my custom task flow where I could select a record with certain value and on return that custom field (in query component) would get populated with selected value. I hope I'm being clear. Please point me to any useful information. Is that even possible? I use JDeveloper 11.1.2.3.4.0 Regards, Marko

    Hi,
    af:query is a component that comes as is. Its not designed for customization in that you can add your own fields. If you have a requirement for this then
    1. expose a method on the VO Impl or AM Impl that expect arguments (your query parameters)
    2. Use the arguments to populate bind variables used by a ViewCriteria
    3. Apply the View Criteria to the View Object
    4. Execte the View Object
    5. Drag and drop the method from the DC panel as a parameter form
    6. Ensure the result table PartialTrigger property is pointing to the button ID of the parameter form
    7. Change whatever UI component you want to change in the parameter form
    This gets you going ...
    Frank

  • Retrieve Filter Field from af:Query Component

    I'm using an af:query component on my form and have pre-definied ViewCriterias that load the page. Each ViewCriteria contains one field that is used across all of my search criterias....I need to be able to retrieve this field in my backing bean and get the value of it. I need to know what the user is searching on for this one particular field (i.e. which will always be available in the af:query. I have the queryListener pointing to a method in my backing bean...does someone have some sample code on how to access the fields used in the query and then access the value of one in particular?
    public void headerQueryListener(QueryEvent queryEvent) {
    CommonHelperFunctions.resolveMethodExpression("#{bindings.AllChangeOrdersQuery1.processQuery}",
    null, new Class[] {QueryEvent.class}, new Object[] {queryEvent});
    // What can I add here to retrieve a filter field and then retrieve it's value??
    The queryListener on my af:query component then calls this headerQueryListener in my backing bean.
    Thanks.

    I have tried the following code just messing around:
    QueryModel varQueryModel = getQueryHeader().getModel();
    List<AttributeDescriptor> attributeDescriptors = varQueryModel.getAttributes();
    AttributeDescriptor ad = attributeDescriptors.get(3);
    The attributeDescriptors has the information that I need. I can see the elements in my query and I can see that element 3 is the one I want, but it doesn't have the an _attrDef name but it does have an mAttrName and the mValues[0] mValue has the value that I'm looking for, but I'm having trouble figuring out how to access this information and retrieve what i actually need.  I'm very new to Java and ADF so sorry if this is a basic Java question, but if anyone could point me to an example or some sample code, I really appreciate it.
    Thanks in Advance.

  • How to add search field to BP_HEAD_SEARCH from component BP_SALES?

    Hi experts,
    I'm quite new to the CRM 2007 and I need help to fulfill a request. It sounds actually quite simple:
    The field "Sales Office" from Sales Area Data should be displayed in the Account Search page as possible search field:
    To Change:
    Component: BP_HEAD_SEARCH
    View: MainSearch
    Sales Office is from:
    Component: BP_SALES
    View: CorpAccountOrgEF
    Context Node: BUILRESORG
    Attribute: STRUCT.SALES_OFFICE
    I've searched all moring in this forum but nothing could help me. Any help is appreciated and rewarded if useful!
    Thanks!
    / Melanie

    Melanie,
    The problem you have is you need to extend the search in all the layers of the application, So this means the following:
    1.  You added the field to the context node
    2.  You need to add the field to be visible in the configuration
    Now for the part not being done, the field needs to be present in the structure:
    CRMT_BUPA_IL_HEADER_SEARCH in order to work.
    Look at the GENIL/BOL class CL_BUPA_IL_HEADER_SEARCH->GET_RESULT_TABLE.
    You will also need to implement the BADI in the enhancement spot CRM_BUPA_IL_SEARCH in order to make your search work correctly.
    Read the documentation for the BADI BADI_CRM_BUPA_IL_SEARCH_EXT in the search extension for more details.  If explains exactly how to do what you want to do.
    Take care,
    Stephen

  • Timezone effects on Date and Timestamp fields in af:query component

    Hello,
    I'm working on an ADF application where time zone is configured as follows:
    * Dynamic View Layer time zone is configured in trinidad-config.xml file and bound to a session scoped value:
    <trinidad-config>
      <skin-family>fusionFx</skin-family>
      <time-zone>#{sessionScope.tz}</time-zone>
    </trinidad-config>* ADF BC time zone is configured in adf-config.xml file and bound to View Layer time zone:
    <adf-config>
      <user-time-zone-config xmlns="http://xmlns.oracle.com/adf/usertimezone/config">
        <user-timezone expression="#{adfFacesContext.timeZone.ID}"/>
      </user-time-zone-config>
    </adf-config>The problem here is that Dates and Timestamp values work as expected all over the application except for the af:query component. When displayed as af:inputDate in af:form, Dates and Timestamp values are NOT getting converted to the time zone (TZ) configured in trinidad-config.xml file, whereas TimestampTz and TimestampLtz are. However, when displayed in af:query component, Dates and Timestamp values are automatically converted to View Layer TZ after a search has been performed.
    For example, say View Layer TZ = US/Pacific and we enter 01/jun/2011 as a search criteria of type Date and then click on the Search button. The displayed value automatically changes to 25/nov/2011, that is, it gets converted to the WLS JVM time zone, which is set to Europe/London.
    Is conversion of Date and Timestamps in af:query component the expected behaviour or could this be a bug?
    Is there any way to avoid this conversion?
    Thanks in advance
    Version:
    ADF Business Components 11.1.1.59.23
    Java(TM) Platform 1.6.0_21
    Oracle IDE 11.1.1.4.37.59.23
    PMD JDeveloper Extension 4.2.5.3.0
    Repost on 26-nov-2011 9:29
    Repost on 28-nov-2011 15:10
    Edited by: Barbara Gelabert on 26-nov-2011 9:29
    Edited by: Barbara Gelabert on 28-nov-2011 15:10

    Hi,
    Thanks for your reply. This certainly seems promising. However, I am getting a connection error now.
    The following...
    jar_loaded = require 'ojdbc14.jar'
    puts "Oracle jar loaded? #{jar_loaded}"
    puts "Starting active record"
    require 'rubygems'
    gem 'activerecord'
    gem 'activerecord-oracle_enhanced-adapter'
    require 'activerecord'
    puts "Connecting to MXGN"
    ActiveRecord::Base.establish_connection(
    :adapter => 'oracle_enhanced',
    :host => 'THEHOST',
    :port => '1550',
    :database => 'THEDB',
    :username => 'THEUSER',
    :password => 'THEPASSWORD'
    ... produces
    Oracle jar loaded? true
    Starting active record
    Connecting to MXGN
    ERROR: ActiveRecord oracle_enhanced adapter could not load Oracle JDBC driver. Please install ojdbc14.jar library.
    ERROR: ActiveRecord oracle_enhanced adapter could not load Oracle JDBC driver. Please install ojdbc14.jar library.
    C:/jruby/jruby-1.2.0/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:76:in `establish_connection': Please install the oracle_enhanced adapter: `gem install activerecord-oracle_enhanced-adapter` (LoadError) (RuntimeError)
    from H:\sandbox\DBPlay\lib\main_enhanced.rb:12
    I'm confused. Am I missing the driver, or have I failed to setup the enhanced Oracle adapter?
    I have tried moving the jar to $JRUBY_HOME/lib too, but the result was the same.
    All help would be greatly appreciated.
    Many Thanks
    Adrian

  • Reorder Saved Search items in af:query component

    Hi,
    Is there any way to change the order of Saved Searches listed in the af:query component. The order that the view criteria are displayed in this component does not seem to have any relationship to the order that they occur in the VO.xml file, nor are they listed alphabetically.
    I'm only interested in ordering the view criteria in the choice list, that I have configured at design time.
    Is this possible?

    forgot to mention in my initial post that I'm using Jdeveloper 11g Rel 1.
    Thanks,

  • Creating search field for a list component

    i have created a glossary of terms using the list component and populating it via an XML file.
    what i would like to do is create a search field that as the user types in the search bar if there are any matching entries in the list, the focus/selection jumps to that particular item in list. i don't want to clear the list just go to the item that matches.
    i would like it to be predictive so if i have these entries:
    samson
    seek
    seether
    south
    and the user types "s" in the search box to the first "s" entry in the list (samson) is selected, if they type "se" the selection jumps to the first entry with "se" in it (seek) if they type "seet" the selection jumps to "seether" and so on.
    i have absolutely no idea how to do it, but more importantly...is this possible?
    i have attached the sample files that i have been working on.
    thanks in advance

    You need the lowercase. the keyCode of the keybpardevent returns the key's uppercase charcode. So the A-key allways returns 65. Therefore convert keycode to char and to lowercase before appending after what's allready there in the field.
    To have the user not have to type the words with proper casing, convert the label to lowercase before doing the indexOf search.
    import fl.data.DataProvider;
    //-------declare vars----------------
    var firstClick:Boolean=true;
    var loader:URLLoader = new URLLoader();
    var dp:DataProvider = new DataProvider();
    var xml:XML;
    //-------add listeners---------------
    loader.addEventListener(Event.COMPLETE,onLoaded);
    glossary.lb.addEventListener(Event.CHANGE, itemChange);
    glossary.search_bar.addEventListener( FocusEvent.FOCUS_IN, clearbox );
    glossary.search_bar.addEventListener( KeyboardEvent.KEY_DOWN, onSearch );
    //-------functions--------------------
    //clears the input field when the user clicks into it for the first time
    //eliminates the need for them to highlight and delete the "type search here" text
    function clearbox( e:FocusEvent ):void {
        if (firstClick==true) {
            glossary.search_bar.text="";
            firstClick=false;
    //populate description box with definition when item is selected
    function itemChange(e:Event):void {
        glossary.ta.text=glossary.lb.selectedItem.data;
    //creates the data provider for the list based off external XML file
    //arranges the items in alphabetical order
    //populates the list
    function onLoaded(e:Event):void {
        xml=new XML(e.target.data);
        var il:XMLList=xml.channel.item;
        for (var i:uint=0; i<il.length(); i++) {
            dp.addItem({data:il.description.text()[i],label:il.title.text()[i]});
        dp.sortOn("label");
        glossary.lb.dataProvider=dp;
        glossary.ta.text="Please make a selection below";
    //dynamic search engine to locate items in the list
    function onSearch( e:KeyboardEvent ):void {
        trace( e.keyCode );
        var input:String = ( glossary.search_bar.text + String.fromCharCode( e.keyCode ).toLowerCase() );
        trace( input )
        for (var i:uint = 0; i < dp.length; i++) {
            if (dp.getItemAt(i).label.toLowerCase().indexOf(input)==0) {
                glossary.lb.selectedIndex=i;
                glossary.ta.text=glossary.lb.selectedItem.data;
                break;
            } else {
                glossary.ta.text="no matching searches";
    //-------load the xml--------------
    loader.load(new URLRequest("xml/movie1.xml"));

  • Programmatically Load Query Component on Page Load

    Hi All.
    We have a requirement in which we need to populate the fields of a query component and execute the query...upon loading of the page.
    Our use case:
    We have a page in which there is an analytic showing counts of requests in different status (i.e. Open, Closed, In Process).
    Status Count
    ==== ====
    Closed _5_
    Open _3_
    In Process _6_
    When the user clicks on the count (which is a hyperlink) we want to take them to the "Search for Requests" page with the criteria filled out and the query automatically executed. For example, if the user clicks on the count of "5" (for Closed)....they will be transferred to the "Search for Requests" page. The query field of "Status" will be defaulted with "Closed" and the query automatically executed (with the 5 requests shown in the result set).
    We are using page fragments (.jsff) in bounded ADF task flows.
    I am thinking that we need to set up a default activity in the "Search for Requests" task flow that will call the AM Impl method to handle this on the model side but I am unclear on how to programmatically set the criteria that is used in a query component?
    Any help is appreciated.
    Thanks.
    D

    In the processRequest of your controller you can invoke a method in the AM which in turn invokes a method in the Search VO which sets the where clause and executes the query.

  • Programmtically Setting View Criteria in ADF Query Component

    I have created two view criterias for a View Object and used ADF Query component for searching. User can select any one of the View Criteria from "saved search" in ADF Query component. but i want to set it programmatically based on some business rules. How i can do that?

    No I don't want to set view criteria on search click. Actually I have ADF Query component on my page which is by default disabled. There are also some fields outside the query component on the value of which i enable ADF Query component and wants to set a particular ViewCriteria based on context. All ViewCriterias are defined and listed in "saved search" of ADF Query component but i don't want to allow user to select it but wants to application set it automatically based on context. For it i will be needed to set a particualar ViewCriteria for ADF Query component through code and then refresh ADF Query component to show newly set ViewCriteria. I know how to refresh query component or any other component through code but don't know how to set ViewCriteria on ADF Query component?

  • af:query component - need help

    hi
    I am implemeting a search page wiht <af:query> component with view criteria. (to be specific drag and drop viewCriteria as query panel with table)
    what i observe is that when I do "Add fields" at runtime the compnent moves up and up till it hides the panelHeader and the other fields with no access to it.
    After i refresh the screen the component comes back to its normal positon but pushes the table component below it down till its barely visible.
    This component seems to be very unstable.
    Let me know if there is any workaround without making the screen unstable.

    Hi,
    You can find some related info here..
    Can I achive valueChangeListener in af:query?
    and
    http://jobinesh.blogspot.com/2011/03/retrieving-viewcriteria-from-custom.html
    Thanks,
    TK

  • Incorrect operators in af:query component

    We have created a search popup using af:query component based on a view criteria.
    The view criteria uses two string[varchar2(60) in EO] attributes named "Name" and "Owner".
    TerritorySearchViewCriteria
    Group
    Name CONTAINS :BindTerritoryName -- String in VO, Varchar2(60) in EO
    AND Owner CONTAINS :BindOwnerName -- String in VO, varchar2(360) in EO
    Issue:
    The operators drop down shows some irrelevant search operators(not meaningful to strings) such as "BETWEEN",
    "NOT BETWEEN", "BEFORE", "AFTER", "ON OR AFTER" and "ON OR BEFORE". Because of this we are seeing some unexpected
    search results when this operators are used for searching.
    On looking at the Bali site and BLAF guidelines page it clearly states that the list of operators for string are
    "EQUALS", "NOT EQUALS", "STARTS WITH", "ENDS WITH", "CONTAINS", "DOES NOT CONTAIN", "LIKE", "IS BLANK" and "IS NOT
    BLANK".
    Bali link: http://dadvmc0454.us.oracle.com:9002/faces-11.1.1.2.0/faces/components/query.jspx?_afrLoop=19876843626481699&_afrWindowMode=0&_afrWindowId=null
    BLAF guidelines: http://blafstaging.us.oracle.com/blafSite/guidelines5/search.html#queryPanelCond
    Attribute Definition in TerritoryEO:
    <Attribute
    Name="Name"
    IsNotNull="true"
    Precision="60"
    ColumnName="NAME"
    Type="java.lang.String"
    ColumnType="VARCHAR2"
    SQLType="VARCHAR"
    TableName="MOT_TERRITORIES">
    Attribute definition in TerritoryVO:
    <ViewAttribute
    Name="Name"
    IsNotNull="true"
    PrecisionRule="true"
    EntityAttrName="Name"
    EntityUsage="Territory"
    AliasName="NAME">
    Query component in ManageTerritories.jsff:
    <af:query id="qryId1" headerText="#{acrGenBundle['Header.Search']}"
    disclosed="true"
    value="#{bindings.TerritorySearchQuery.queryDescriptor}"
    model="#{bindings.TerritorySearchQuery.queryModel}"
    queryListener="#{backingBeanScope.ManageTerritoriesBean.onTerritorySearchQuery}"
    queryOperationListener="#{bindings.TerritorySearchQuery.processQueryOperation}"
    resultComponentId="::pc2:resId1"
    saveQueryMode="hidden"
    modeChangeVisible="false"
    conjunctionReadOnly="true"
    styleClass="AFStretchWidth"/>
    Is there a way to eliminate the operators which does not make sense for String type.
    Thanks,
    Sekar

    As per the guidelines mentioned for String, You could remove the unwanted operators from the view criteria item.
    The example below shows - how the unwanted operators namely BETWEEN & NOTBETWEEN could be removed.
    For more details, look into the following section 27.3.3 in the developer's guide:
    http://download.oracle.com/docs/cd/E15523_01/web.1111/b31974/web_search_bc.htm#CIHIDGGC
    Sample:
    <ViewCriteria
    Name="EmployeesVOByFirstNameOrLastName"
    ViewObjectName="model.views.EmployeesVO"
    Conjunction="AND">
    <Properties>
    <CustomProperties>
    <Property
    Name="displayOperators"
    Value="InAdvancedMode"/>
    <Property
    Name="autoExecute"
    Value="false"/>
    <Property
    Name="allowConjunctionOverride"
    Value="true"/>
    <Property
    Name="showInList"
    Value="true"/>
    <Property
    Name="mode"
    Value="Basic"/>
    </CustomProperties>
    </Properties>
    <ViewCriteriaRow
    Name="vcrow0"
    UpperColumns="1">
    <ViewCriteriaItem
    Name="FirstName"
    ViewAttribute="FirstName"
    Operator="CONTAINS"
    Conjunction="AND"
    Value=""
    Required="Optional">
    *<CompOper*
    Name="Category"
    ToDo="-1"
    Oper="BETWEEN"/>
    *<CompOper*
    Name="Category"
    ToDo="-1"
    Oper="NOTBETWEEN"/>
    </ViewCriteriaItem>
    <ViewCriteriaItem
    Name="LastName"
    ViewAttribute="LastName"
    Operator="CONTAINS"
    Conjunction="OR"
    Value=""
    Required="Optional"/>
    </ViewCriteriaRow>
    </ViewCriteria>
    Thanks,
    Navaneeth

  • Glass Pane( preventUserInput when user clicks on Search button in af:query)

    Hi,
    We are using glass pane implementation on a search screen.
    When I click on Search button in af:query component (having selectInputDate (Date Picker) components)., glass pane is firing correctly,
    but second time when I am trying to select date using Date Picker (and Change the Month), glass pane is fired (entering into handleBusyState function) and calendar popup is not opening.
    I folled the below article for implementation.
    url: http://www.oracle.com/technetwork/developer-tools/adf/learnmore/27-long-running-queries-169166.pdf used for glassPane implementation.
    Can any one help me for this issue.

    Hi am using the following code (javascript) -- Jdev(11.1.1.3)
    function preventUserInput(evt){   
    var eventSource = evt.getSource();
    var popup1 = eventSource.findComponent("showGlassPanePopup");
    if (popup1 != null){
    AdfPage.PAGE.addBusyStateListener(popup1,handleBusyState);
    evt.preventUserInput();
    //JavaScript call back handler
    function handleBusyState(evt){ 
    var popup = AdfPage.PAGE.findComponentByAbsoluteId('r3:0:r1:0:showGlassPanePopup');
    if(popup!=null){
    if (evt.isBusy()){
    popup.show();
    } else if (popup.isPopupVisible()) {
    popup.hide();
    AdfPage.PAGE.removeBusyStateListener(popup, handleBusyState);
    ... End of Code..
    This line .. (popup.isPopupVisible()) removes the Popup , if popup is visible...
    If u want the view am using..
    SELECT EMPNO , DEPTNO , HIREDATE FROM EMPLOYEE (sample Application i have created), created a view criteria for this..
    ( (EMPNO = :empNum ) AND (DEPTNO = :deptNum ) AND (TO_CHAR( TO_TIMESTAMP(HIREDATE), 'yyyy-mm-dd hh24:mi:ss.ff') = :hireDts ) ) (View Criteria)
    .. <af:clientListener method="enforcePreventUserInput" type="query"/> (added for af:query)
    Popup Used: <af:popup id="showGlassPanePopup" contentDelivery="immediate">
    <af:dialog id="d2" type="none" closeIconVisible="false">
    <af:panelGroupLayout id="panelGroupLayout1" layout="vertical">
    <af:outputText value="Processing......Please Wait.." id="ot97"/>
    </af:panelGroupLayout>
    </af:dialog>
    </af:popup>
    1. When i click search for first time.. it is showing like -- Processing .. Please Wait'
    2. When i click select Date picker it is show -- Processing .. Please Wait'
    and show a calender popup window.. If we change the month ... it will again show like -- Processing .. Please Wait'
    and it will not open calender window.
    Please Help me on this..Am facing trouble due to this.
    Thanks in Advance.
    Edited by: user10115793 on Nov 15, 2011 12:58 AM

  • Af:query component added field not removed when remove icon is clicked

    I have an af:query component on a popup dialog. In advanced mode when I add a field, the new field appears in the searchRegion followed by a red X remove icon. If I subsequently click that remove icon, the query refreshes, the red icon is gone, but the newly added field still remains. The query component is linked to a standard VO query executable in the bindings. There is no custom processing of the value, model, queryListener or the queryOperationListener. In all other respects the query component works fine. The only problem is a newly added field not being removed when the remove icon is clicked. Here's how the component is setup (an added wrinkle is that the query component is hosted in a Declarative Component, so that makes this code a little harder to decipher).
    Does anyone know where I should start looking for this? Hopefully I don't have to implement my own queryOperationListener.
    JDev version is Build JDEVADF_11.1.1.4.0_GENERIC_101227.1736.5923
    --- snippet from the page fragment ------
    <af:popup id="frmsLstPU" contentDelivery="lazyUncached">
    <af:dialog id="d1" type="ok"
    styleClass="AFStretchWidth" resize="on"
    stretchChildren="first" contentWidth="840"
    contentHeight="480"
    title="#{UnifiedResourceBundle['FORMSLIST.DIALOG.TITLE']}">
    <idmkr_adf:Correspondence_Formslist_Query idmkr_query_model="#{bindings.FormVOFlatQueryCriteriaQuery}"
    idmkr_table_binding="#{viewScope.FormsListBacking}"
    idmkr_table_model="#{bindings.FormVOFlatQuery1}"
    idmkr_bindings="#{bindings}"
    idmkr_resourcebundle="#{preferences}"
    idmkr_printStreamBean="#{viewScope.FormsList}"
    id="cf1">
    </idmkr_adf:Correspondence_Formslist_Query>
    </af:dialog>
    </af:popup>
    -- snippet from the Correspondence_Formslist_Query declarative component ------
    <af:query id="qryId1"
    headerText="#{UnifiedResourceBundle['FORMSLIST.QUERY.SEARCH.TEXT']}"
    disclosed="true"
    value="#{attrs.idmkr_query_model.queryDescriptor}"
    model="#{attrs.idmkr_query_model.queryModel}"
    queryListener="#{attrs.idmkr_query_model.processQuery}"
    queryOperationListener="#{attrs.idmkr_query_model.processQueryOperation}"
    resultComponentId="::resId1" displayMode="default"
    styleClass="AFStretchWidth"
    rows="4" maxColumns="2"/>

    I have changed the contentDelivery from "lazyUncached" to "immediate" and the same problem occurs. Thank your for your suggestion.

  • Setting default value read from user session, for an LOV in Query component

    I want to set the default value of a field in VO that participates in a named view criteria and thereby in Query component. That field is configured with an LOV by mean of a view accessor. The values are Y and N and the corresponding display strings obtained from view accessor are true and false respectively.
    I am able to set the default value by setting the value of the criteria item corresponding to that field in view criteria. I am setting the value as either Y or N and I am able to corresponding display string as per the view accessor, on the query component when it is rendered.
    I want to read the defauilt value from the ADF BC user session and set it as default value. I tried setting the values as "adf.userSession.userData.usageFlag". Iam ensuring that the attribute usageFlag is set before the view activity that has the query component is invoked. But this is ending up showing no default value in the Query component when rendered.
    Can any one let me know how to go about with this?

    I made up your table since you didn't provide some example, but I'm sure this will give you the picture:
    SQL> var run_type varchar2(1)
    SQL> exec :run_type := 'A'
    PL/SQL procedure successfully completed.
    SQL> create table my_cycles as select level cycle_id
      2                            ,      level cycle_status
      3                            from   dual connect by level <= 5;
    Table created.
    SQL> select cycle_id
      2  from   my_cycles
      3  where  case
      4           when :run_type = 'D' and cycle_status  = 1 then 1
      5           when :run_type != 'D' and cycle_status  in ( 2, 3 ) then 1
      6         end = 1;
      CYCLE_ID
             2
             3
    2 rows selected.
    SQL> exec :run_type := 'D';
    PL/SQL procedure successfully completed.
    SQL> /
      CYCLE_ID
             1
    1 row selected.
    SQL>

  • Class Cast exception when clicking Search Button in Query component

    Hi
    We have to implement the Query component in ADF programmatically.. We are using Toplink as the Model layer for ADF.
    We followed the Web User Interface Guide for ADF development, Chapter 12 (Using Query Components) for the same.
    We already have implemented the following classes:
    1) QueryModel
    2) QueryDescriptor
    3) AttributeDescriptor
    4) ConjuctionCriterion
    5) AttributeCriterion etc.
    We are able to see the Search panel in UI with selected fields in Basic as well as Advanced mode.
    When we click on Search button, we are getting Class Cast exception.
    The stacktrace of the exception is below:
    <LifecycleImpl> <_handleException> ADF_FACES-60098:Faces lifecycle receives unhandled exceptions in phase INVOKE_APPLICATION 5
    javax.el.ELException: java.lang.ClassCastException: view.QueryDescriptorImpl cannot be cast to oracle.adfinternal.view.faces.model.binding.FacesCtrlSearchBinding$QueryDescriptorImpl
         at com.sun.el.parser.AstValue.invoke(Unknown Source)
         at com.sun.el.MethodExpressionImpl.invoke(Unknown Source)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.broadcastToMethodExpression(UIXComponentBase.java:1300)
         at oracle.adf.view.rich.component.UIXQuery.broadcast(UIXQuery.java:116)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.broadcastEvents(LifecycleImpl.java:902)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:313)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:186)
         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
         at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
         at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
         at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
         at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:205)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:106)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:446)
         at oracle.adfinternal.view.faces.activedata.AdsFilter.doFilter(AdsFilter.java:60)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:446)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:271)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:177)
         at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:111)
         at java.security.AccessController.doPrivileged(Native Method)
         at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313)
         at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:413)
         at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:94)
         at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:161)
         at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:136)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
         at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
         at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
         at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
         at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
         at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
         at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
    Caused by: java.lang.ClassCastException: view.QueryDescriptorImpl cannot be cast to oracle.adfinternal.view.faces.model.binding.FacesCtrlSearchBinding$QueryDescriptorImpl
         at oracle.adfinternal.view.faces.model.binding.FacesCtrlSearchBinding.processQuery(FacesCtrlSearchBinding.java:374)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:597)
         ... 44 more
    <RegistrationConfigurator> <handleError> ADF_FACES-60096:Server Exception during PPR, #1
    javax.el.ELException: java.lang.ClassCastException: view.QueryDescriptorImpl cannot be cast to oracle.adfinternal.view.faces.model.binding.FacesCtrlSearchBinding$QueryDescriptorImpl
         at com.sun.el.parser.AstValue.invoke(Unknown Source)
         at com.sun.el.MethodExpressionImpl.invoke(Unknown Source)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.broadcastToMethodExpression(UIXComponentBase.java:1300)
         at oracle.adf.view.rich.component.UIXQuery.broadcast(UIXQuery.java:116)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.broadcastEvents(LifecycleImpl.java:902)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:313)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:186)
         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
         at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
         at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
         at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
         at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:205)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:106)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:446)
         at oracle.adfinternal.view.faces.activedata.AdsFilter.doFilter(AdsFilter.java:60)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:446)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:271)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:177)
         at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:111)
         at java.security.AccessController.doPrivileged(Native Method)
         at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313)
         at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:413)
         at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:94)
         at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:161)
         at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:136)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
         at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
         at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
         at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
         at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
         at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
         at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
    Caused by: java.lang.ClassCastException: view.QueryDescriptorImpl cannot be cast to oracle.adfinternal.view.faces.model.binding.FacesCtrlSearchBinding$QueryDescriptorImpl
         at oracle.adfinternal.view.faces.model.binding.FacesCtrlSearchBinding.processQuery(FacesCtrlSearchBinding.java:374)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:597)
         ... 44 more
    Any help will be highly appreciated.
    Thanks in advance.
    Anup

    Gary Tam wrote:
    I am working on a project that utilize Oracle Ultra Search that will crawl and tag documents in the database.
    The initial code that uses pure JDBC was working fine, but when we switch to get database connection from dataSource, we are getting classCast exception inside Oracle's ultra search. The problems is that the class we get from dataSource.getConnection() returns
    "weblogic.jdbc.wrapper.JTSConnection_oracle_jdbc_driver_T4CConnection". But Oracle UltraSearch is not expecting that.
    Is there anyway to unwrap the connection that we get from dataSource ? I tried casting to OracleConnection,
    assign the connection to "oracle.jdbc.driver.T4CConnection" without any success.
    Any help would be appricated.
    ThanksHi Gary. If the code you want to run is running inside WebLogic, such as in a JSP,
    then look for our documentation on our JDBC extension 'getVendorConnection()". It
    will get you a direct Oracle connection for their mis-declared UltraSearch
    classes (they declare they take java.sql.Connection, but they really demand a
    concrete thin driver connection. No other Oracle driver will be given a chance).
    Joe

Maybe you are looking for