Командная ссылка без перенаправления страницы - PullRequest
1 голос
/ 03 апреля 2012

Я хочу нажать на изображение (commandLink), которое перенаправляет на контроллеры, которые вычисляют количество щелчков и обновляет поле в объекте по возвращении. Я не хочу перенаправлять страницу, однако должно появиться всплывающее окно, чтобы пользователь загружает файл из Documents.

Вот мой код. Может кто-нибудь сказать мне, как заставить работать outputlink .., хотя мой счетчик работает нормально.

<apex:pageBlockTable value="{!Docs}" var="d" rendered="{!if(Docs.size>0,true,false)}">

<apex:column >                
 <apex:commandLink action="{!incrementCounter}">
 <apex:image url="{!URLFOR($Resource.LibraryImages)}" title="Click to Download" />  
 <apex:param assignTo="{!SelectedId}" name="selId" value="{!d.Id}"/>   
<apex:outputLink value="/servlet/servlet.FileDownload?file={!d.Document_Id__c}"/>            
 </apex:commandLink>
</apex:column>

<apex:column headerValue="Downloaded" >
   <apex:outputText value="{!d.Counter__c}" />   
  </apex:column>

</apex:pageBlockTable>

-------------------------------------------

 public pagereference incrementCounter()
    {

 UpdateCount = [select id, counter__c from Document_Details__c where id =:SelectedId];  

  Decimal num= updatecount.counter__c;
  updatecount.counter__c=num+1;
  update updatecount;

 Docs.clear();
     // to get the updated values from the object 

Docs=[Select id, Name__c, Document_Id__c,        counter__c,Uploaded_by__c,Type__c,Description__c,Document_Created_On__c,My_Library__c From

Document_Details__c where My_Library__c=: MyLib.id];


 return null;

}

Я попытался частично обновить страницу, используя outputlink, поддержку действий и повторное рендеринг, но это не сработало, поэтому я подумал об использовании commandlink.

1 Ответ

0 голосов
/ 04 апреля 2012

Такие элементы, как <apex:actionStatus> и <apex:commandLink> имеют события javascript, которые вы можете использовать для выполнения подобных задач, поэтому я бы сделал на вашей странице что-то вроде следующего:

<apex:commandLink action="{!incrementCounter}"
  oncomplete="window.open('/servlet/servlet.FileDownload?file={!d.Document_Id__c}');">
    <apex:image url="{!URLFOR($Resource.LibraryImages)}" title="Click to Download" />  
    <apex:param assignTo="{!SelectedId}" name="selId" value="{!d.Id}"/>   
</apex:commandLink>

Таким образом, вы вызываете свой метод для увеличения счетчика, и как только это будет сделано, документ открывается в новом окне, как вам нужно.

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