Pregunta

Tengo una función que toma searchWorkByName "clave" como un argumento SQOL y el uso para recuperar los datos.

En el lado Visualforce, tengo un enlace que llama searchWorkByName pero me gustaría ser capaz de pasar argumentos tales como el carácter 'a'

ejemplo, (esto arroja un error)

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

¿Es posible hacerlo si no lo que es las alternativas?

ápice de clase

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>
¿Fue útil?

Solución

No, no se puede pasar argumentos a las acciones por el estilo.

1 opción es hacer esta variable un campo de formulario normal que el usuario puede escribir texto / selecciona entre desplegable / lo que sea - si se va a utilizar para el mismo nombre de una variable en Apex (y hacer que sean visibles de setters / getters), esto va a funcionar sin problemas. Echa un vistazo a mi respuesta en ¿Cómo integro de Salesforce con Google Maps? para empezar.

La segunda opción - si esta búsqueda debe realizarse de alguna manera mediante programación sin tener que hacer clic el usuario nada, si los datos, por ejemplo, proviene de la página en sí (es decir, se lee en la etiqueta <apex:repeat>) ... que podría hacer una pequeña página de ayuda y controlador y llamarlos como componentes. No hay ningún problema con el paso de los datos a los componentes. Consulte la documentación de <apex:component> y <apex:componentBody>. Pero creo que os primera respuesta más útil para usted.

Buena suerte!

Otros consejos

Puede pasar parámetros a partir de una página en una función como esta:

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

Obviamente, el valor del parámetro en este caso es fijo. Si quieres algo dinámico (es decir, tipos de usuario algo y que se pasa a la función), no estoy 100% seguro de cómo se haría eso, pero yo creo que puede ser posible. Sin embargo, la solución ya publicado pieles de gato para usted, pero yo pensé que un seguimiento con una alternativa en caso de que sea cualquier uso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top