Как перенаправить на новую страницу VF с командной ссылкой и выходной ссылкой?

У меня есть список активов

Name:  column 2:  etc

A1      C1        b1
A2      c2        b2

Когда я нажимаю на A1, я вызываю action="{! assetsClicked}" внутри, чтобы выполнить некоторую логику, но я не могу перенаправить его на другую страницу Visual Force. Если я использую, я могу сослаться на другую страницу VF, но не могу сделать action="{ ! АктивНажато}"

Есть ли способ объединить их вместе или как-то иначе?

Код страницы:

<apex:form >
  <apex:commandLink action="{! assetClicked}" value="{!wn.name}" id="theCommandLink"> 
    <apex:param value="{!wn.name}" name="id" assignTo="{!selectedAsset}" ></apex:param>
    <apex:outputLink value="/{!wn.id}" id="eventlink">{!wn.name}</apex:outputLink>
  </apex:commandLink> 
</apex:form>

person motti10    schedule 01.02.2012    source источник


Ответы (3)


Вы не указали, как получить параметр в контроллере целевой страницы Visualforce. Я нашел это на другом форуме:

// Assuming the parameter is 'id' after redirecting to page2 you can retrieve the paramter thus
public customcontrollerpage2() {
    String ID = ApexPages.currentPage().getParameters().get('id');
}
person John Strong    schedule 06.02.2013

Вам потребуется использовать класс PageReference.

Вот модифицированный пример из документации:

// selected asset property
public string selectedAsset {get;set;}

public PageReference assetClicked() 
{
    // Your code here

    PageReference redirect = new PageReference('/apex/PageName'); 

    // pass the selected asset ID to the new page
    redirect.getParameters().put('id',selectedAsset); 
    redirect.setRedirect(true); 

    return redirect;
}

В качестве альтернативы вы можете использовать Page.PageName; вместо new PageReference('/apex/PageName');, как описано здесь.

person Matt K    schedule 01.02.2012

В методе кнопки добавьте что-то вроде этого в конце метода:

PageReference pr = new PageReference('/apex/YOUR_PAGE_NAME');

return pr;
person Łukasz Skrodzki    schedule 01.02.2012
comment
Спасибо, у меня нет кнопки, я нажимаю на ссылку (имя актива) в столбце. ‹/apex:outputLink› работает, но не может вызвать метод в контроллере - person motti10; 01.02.2012