Domanda

Ho una funzione che prende searchWorkByName "chiave" come SQOL argomento e utilizzare per recuperare i dati.

Nel lato Visualforce, ho un link che chiama searchWorkByName ma vorrei essere in grado di passare all'argomento, come carattere 'a'

esempio, (questo genera un errore)

<apex:commandLink value="search!" action="{!searchWorkByName('aaa')}" />

E 'possibile farlo se non ciò che è le alternative?

apice classe

public class SearchWorkTest { 

    public PageReference searchWorkByName(String key) {

            //find record of work names starting from provided key character
            workNames = [select name from work__c where work__c.name like 'key%'];
            return Page.searchResult;   
     }
}

Visualforce

<apex:page standardController="work__c" extenstions="SearchWorkTest">
  <!-- Is it possible to pass argument like 'foo' ? -->
  <apex:commandLink value="search!" action="{!searchWorkByName}" />
</apex:page>
È stato utile?

Soluzione

No, non è possibile passare gli argomenti ad azioni del genere.

1 opzione è quella di rendere questa variabile un normale campo di modulo che l'utente può digitare il testo / selezionare dal menu a discesa / qualunque cosa - se userete stesso nome per una variabile in Apex (e renderlo pubblicamente visibile setter / getter), questo funzionerà senza problemi. Scopri la mia risposta a Come faccio a integrare Salesforce con Google Maps? per iniziare.

Seconda opzione - se questa ricerca deve essere in qualche modo fatto programmaticamente, senza dover fare clic dell'utente nulla, se i dati, ad esempio viene dalla pagina stessa (cioè si legge nel tag <apex:repeat>) ... si potrebbe fare una piccola pagina di supporto del controller & e li chiamano come componenti. Non c'è nessun problema con il passaggio di dati ai componenti. Controllare la documentazione per <apex:component> e <apex:componentBody>. Ma penso che os prima risposta più utile per voi.

In bocca al lupo!

Altri suggerimenti

È possibile passare i parametri da una pagina in una funzione come questa:

<apex:commandLink value="search!" action="{!searchWorkByName}">
  <apex:param name="key" value="val"/>
</apex:commandLink>

Ovviamente, il valore del parametro in questo caso è fisso. Se volete qualcosa di dinamico (cioè utente digita qualcosa e che viene passato alla funzione), non sono sicuro al 100% di come si farebbe questo, ma penso che potrebbe essere possibile. Tuttavia, la soluzione già postato pelli il gatto per voi, ma ho pensato di follow-up con un'alternativa nel caso in cui si tratta di qualche utilità.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top