문제

I have a function searchWorkByName that takes "key" as an argument and use SQOL to retrieve the data.

In visualforce side, I have a link that calls searchWorkByName but would like to be able to pass argument such as character 'a'

example, (this throws an error)

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

Is it possible to do so if not what is the alternatives?

apex class

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>
도움이 되었습니까?

해결책

No, you cannot pass arguments to actions like that.

1 option is to make this variable a normal form field that user can type text/select from dropdown/whatever - if you'll use same name for a variable in Apex (and make it publicly visible by setters/getters), this will work without problems. Check out my answer at How do I integrate Salesforce with Google Maps? to get started.

Second option - if this search must be somehow done programatically without user having to click anything, if the data for example comes from page itself (i.e. is read in <apex:repeat> tag)... you could make a small helper page & controller and call them as components. There is no problem with passing data to components. Check documentation for <apex:component> and <apex:componentBody>. But I think first answer os most useful for you.

Good luck!

다른 팁

You can pass in parameters from a page into a function like this:

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

Obviously, the value of the parameter in this case is fixed. If you want something dynamic (i.e. user types something and that is passed to the function), I'm not 100% sure how you'd do that, but I think it might be possible. However, the solution already posted skins the cat for you, but I thought I'd follow up with an alternative in case it's any use.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top