2010-11-04 1 views
2

У меня есть функция searchWorkByName, которая принимает «ключ» в качестве аргумента и использует SQOL для извлечения данных.Можно ли передать аргумент из visualexce apex tag?

В стороне Visualforce, у меня есть ссылка, которая вызывает searchWorkByName, но хотели бы иметь возможность передавать аргументы, такие как символ «а»

Например, (это выдает ошибку)

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

ли возможно ли это сделать, если нет, то какие альтернативы?

апекс класс

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> 

ответ

5

Нет, вы не можете передать аргументы действий, как это.

1 параметр состоит в том, чтобы сделать эту переменную нормальным полем формы, в котором пользователь может набирать текст/выбирать из выпадающего списка/независимо - если вы используете одно и то же имя для переменной в Apex (и сделаете ее общедоступной для сеттеров/геттеров) , это будет работать без проблем. Ответьте мне на How do I integrate Salesforce with Google Maps?, чтобы начать.

Второй вариант - если этот поиск должен быть каким-то образом выполнен программно, если пользователь не должен ничего нажимать, если данные, например, поступают из самой страницы (т. Е. Читается в теге <apex:repeat>) ... вы можете сделать небольшую вспомогательную страницу & контроллер и назвать их компонентами. Нет проблем с передачей данных компонентам. Проверьте документацию для <apex:component> и <apex:componentBody>. Но я думаю, что первый ответ будет полезен для вас.

Удачи вам!

+0

Спасибо за подсказку! –

10

Вы можете передать параметры из страницы в функцию, как это:

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

Очевидно, что значение параметра в этом случае фиксируется. Если вы хотите что-то динамическое (т. Е. Пользователь что-то вводит и передается функции), я не уверен на 100%, как вы это сделаете, но я думаю, что это возможно. Тем не менее, решение уже отправлено скин-кошка для вас, но я думал, что буду следить за альтернативой, если это будет полезно.

+0

+1 Черт, забыли об этом :) – eyescream

Смежные вопросы