Можно ли передать аргумент из тега apex visualforce? - PullRequest
2 голосов
/ 04 ноября 2010

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

На стороне Visualforce у меня есть ссылка, которая вызывает searchWorkByName, но я хотел бы иметь возможность передавать аргумент, такой как символ 'a'

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

<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>

Ответы [ 2 ]

10 голосов
/ 05 ноября 2010

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

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

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

5 голосов
/ 04 ноября 2010

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

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

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

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...