2012-07-10 4 views
1

J'ai écrit une simple application Proof-of-Concept pour tester les champs de saisie semi-automatique en utilisant Oracle ADF, et bien que cela fonctionne principalement, l'attribut maxSuggestedItems ne semble pas avoir d'effet. La documentation d'Oracle indique que mettre une valeur autre que -1 devrait limiter la liste des valeurs renvoyées et inclure un élément "Plus ..." en bas qui entraînera le retour de la liste entière. Au lieu de cela, la liste entière est toujours renvoyée.maxSuggestedItems avec Oracle ADF af: autoSuggestBehavior

Est-ce quelque chose que je dois implémenter manuellement? Si oui, comment pourrait-on aborder cela?

La page JSFF a pour code qu'elle contient:

<af:inputText label="Accessories:" id="it4"> 
    <af:autoSuggestBehavior suggestItems="#{accessorySuggest.onAccessorySuggest}" 
          maxSuggestedItems="5"/> 
</af:inputText> 

La méthode qui renvoie les valeurs suggérées (toutes codées en dur bien sûr) est la suivante:

private static final String[] accessories = 
{ "Alloy Wheel", "All-Weather Cargo/Trunk Mat", "All-Weather Floor Mats", 
    "Audio Unit - Base", "Audio Unit - Premium", "Auto-Dimming Mirror", 
    "Bluetooth", "Body Side Moldings", "Capert Floor Mats - Premium", 
    "Car Cover", "Cargo Hooks", "Cargo Liner", "Suggestion 1", 
    "Suggestion 2", "Suggestion 3", "Suggestion 4", "Suggestion 5", 
    "Suggestion 6", "Suggestion 7", "Suggestion 8", "Suggestion 9", 
    "Suggestion 10", "Suggestion 11", "Suggestion 12", "Suggestion 13", 
    "Suggestion 14", "Suggestion 15", "Suggestion 16", "Suggestion 17", 
    "Suggestion 18", "Suggestion 19", "Suggestion 20", "Suggestion 21", 
    "Suggestion 22", "Suggestion 23", "Suggestion 24", "Suggestion 25", 
    "Suggestion 26", "Suggestion 27", "Suggestion 28", "Suggestion 29", 
    "Suggestion 30" }; 

public List onAccessorySuggest(FacesContext context, 
           AutoSuggestUIHints hints) { 
    ArrayList<SelectItem> suggestItems = new ArrayList<SelectItem>(); 
    String submittedValue = hints.getSubmittedValue(); 

    //don't return anything until the user has entered at least 3 characters 
    if(hints.getSubmittedValue().length() < 3) { 
     return suggestItems; 
    } 

    for (String s : accessories) { 
     if (s.toUpperCase().startsWith(submittedValue.toUpperCase())) { 
      suggestItems.add(new SelectItem(s)); 
     } 
    } 

    return suggestItems; 
} 

Répondre

2

voir http://jdevadf.oracle.com/adf-richclient-demo/docs/apidocs/oracle/adf/view/rich/model/AutoSuggestUIHints.html

En fait, c'est votre implémentation qui doit accéder et considérer la valeur maximum des éléments suggérés. Le seul cas d'utilisation pour lequel cela peut fonctionner la boîte est si la suggère la liste provient d'une liste de LOV dirigée par les modèles dans ADF BC

Donc, en résumé, vous accédez aux éléments max de AutoSuggestUIHints une dshorten votre liste de retour

Frank

+0

Merci Frank. C'est certainement vrai, et on peut limiter le nombre de réponses qui sont retournées, mais ce que je n'ai pas pu faire, c'est imiter la fonctionnalité "Plus ..." qui vient avec les composants BC prêts à l'emploi. Il doit y avoir quelque chose que je peux faire à la liste qui est retournée au client, j'espère juste que quand je le trouverai, ce n'est pas trop hack-ish. :) – sernaferna

+0

Ce n'est pas possible de jour. Le lien Plus que vous voyez pour la liste pilotée par modèle dans ADF BC n'est pas via autosuggest mais un filtre intelligent. Je vais déposer une demande d'amélioration pour voir s'il y a quelque chose que nous pouvons faire sur la balise nehavior. –

Questions connexes