есть вот такой VF кусок и вот такой обработчик. Почему то поведение обработчика зависит от наличия блока Rerender в VF CommandButton. Если есть ререндер - обрабатывает правильно, если его нет (например хочу всю страницу перегрузить) то переменная TheID всегда == null. Кто нибудь может объяснить как это работает я не понимаю почему поведение функции зависит от того что я там ререндерю или нет.
<apex:outputPanel id="theResult" rendered="{!TheLeads!=null}" >
<apex:pageBlockTable value="{!TheLeads}" var="MyLead" title="Results" id="theSearchResult">
<apex:column headerValue="#">
<apex:commandButton onclick="if(!confirm('WARNING: will Delete {!MyLead.Name} {!MyLead.Phone} {!MyLead.Email} from database!')){return};" value="Delete" action="{!DeleteD}" title="WARNING: irreversible"reRender="theResult,UpBlock" >
<apex:param value="{!MyLead.Id}" name="TheId" assignTo="{!TheId}" />
</apex:commandButton>
</apex:column>
public void DeleteD() {
if (TheId==null) return; //можно поставить дебаг - без ререндера всегда NULL
..........
}
есть вот такой VF кусок и вот такой обработчик. Почему то поведение обработчика зависит от наличия блока Rerender в VF CommandButton. Если есть ререндер - обрабатывает правильно, если его нет (например хочу всю страницу перегрузить) то переменная TheID всегда == null. Кто нибудь может объяснить как это работает я не понимаю почему поведение функции зависит от того что я там ререндерю или нет. [i]<apex:outputPanel id="theResult" rendered="{!TheLeads!=null}" > <apex:pageBlockTable value="{!TheLeads}" var="MyLead" title="Results" id="theSearchResult"> <apex:column headerValue="#">[/i] <apex:commandButton onclick="if(!confirm('WARNING: will Delete {!MyLead.Name} {!MyLead.Phone} {!MyLead.Email} from database!')){return};" value="Delete" action="{!DeleteD}" title="WARNING: irreversible"[b]reRender="theResult,UpBlock"[/b] > <apex:param value="{!MyLead.Id}" name="TheId" assignTo="{!TheId}" /> </apex:commandButton> [i]</apex:column>[/i] public void DeleteD() { if (TheId==null) return; //можно поставить дебаг - без ререндера всегда NULL .......... }
Помню, тоже сталкивался с такой проблемой как-то давно.
Не могу вспомнить как ее решал. Наверное просто оставлял rerender
Почитай здесь Passing Values to Apex using Buttons inside Repeat Loops? Может найдешь ответ.
Помню, тоже сталкивался с такой проблемой как-то давно. Не могу вспомнить как ее решал. Наверное просто оставлял rerender Почитай здесь [url=https://developer.salesforce.com/forums?id=906F000000096wlIAA]Passing Values to Apex using Buttons inside Repeat Loops?[/url] Может найдешь ответ.
походу это баг, ну или фича. Стандарт про который нужно знать. Вот этот ответ понравился, я думаю так и есть на самом деле.
The basic functionality of a command button is set all the values from the page to the controller.This will be a submit request. In that case you don't need to set the values using apex:param.Setters will be automatically get called.
Решается воркараундами типа сделать не apex:commandButton а аpex:commandLink и задать стиль как button. Ну или использовать ререндер и не париться почему.
походу это баг, ну или фича. Стандарт про который нужно знать. Вот этот ответ понравился, я думаю так и есть на самом деле. The basic functionality of a command button is set all the values from the page to the controller.This will be a submit request. In that case you don't need to set the values using apex:param.Setters will be automatically get called. Решается воркараундами типа сделать не apex:commandButton а аpex:commandLink и задать стиль как button. Ну или использовать ререндер и не париться почему.