Проблема с extentions стандартного контроллера

Проблема с extentions стандартного контроллера

Всем привет.
Такая проблема - пытаюсь создать extentions стандартного контроллера, чтобы прикрутить кнопку к Contacts.
Создал класс апекса

public with sharing class AddCommUserController {

private final Account acct;
private final Contact cont;
private final User usr;
public String ContactOwnerID;
public String ManagerUserID;
public String ManagerEMail;
public String AccName;
public String EmailBody;
public String EmailSubject;

public AddCommUserController(ApexPages.StandardController stdController) {
this.cont = (Contact)stdController.getRecord();
ContactOwnerID = cont.OwnerId;
usr = [SELECT ManagerId FROM User WHERE Id = :ContactOwnerID];
ManagerUserID = usr.ManagerId;
usr = [SELECT Email FROM User WHERE Id = :ManagerUserID];
ManagerEMail = usr.Email;
acct = [SELECT Name FROM Account WHERE Id=:cont.AccountId];
AccName = acct.Name;
EmailSubject = 'Approval request for adding Customer Community User';
EmailBody = 'Please approve new Customer Community User:'+'\n'+
'Account: '+AccName+'\n'+
'Contact: '+cont.FirstName+' '+cont.LastName;
}

public void sendMail(String address, String subject, String body) {
// Create an email message object
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
String[] toAddresses = new String[] {address};
mail.setToAddresses(toAddresses);
mail.setSubject(subject);
mail.setPlainTextBody(body);
// Pass this email message to the built-in sendEmail method
// of the Messaging class
Messaging.SendEmailResult[] results = Messaging.sendEmail(
new Messaging.SingleEmailMessage[] { mail });
inspectResults(results);
}

// Helper method
private static Boolean inspectResults(Messaging.SendEmailResult[] results) {
Boolean sendResult = true;

// sendEmail returns an array of result objects.
// Iterate through the list to inspect results.
// In this class, the methods send only one email,
// so we should have only one result.
for (Messaging.SendEmailResult res : results) {
if (res.isSuccess()) {
System.debug('Email sent successfully');
}
else {
sendResult = false;
System.debug('The following errors occurred: ' + res.getErrors());
}
}

return sendResult;
}
}


Страница:
<apex:page standardController="Contact" extensions="AddCommUserController">

<apex:form >
<apex:commandButton value="Add Community User" Action="{!sendMail}">
<apex:param name="address" value="{!ManagerEMail}" />
<apex:param name="subject" value="{!EmailSubject}" />
<apex:param name="body" value="{!EmailBody}" />
</apex:commandButton>
</apex:form>
</apex:page>

В итоге - ругается:
Unknown method 'ContactStandardController.sendMail()

Что я делаю не так?..

Поменяйте сигнатуру метода - страница ожидает метод sendMail(), а у вас sendMail(String, String String) - то что вы в качестве параметров в commandButton что-то там пробрасывает не означает что это будет использовано как атрибуты метода - не будет, это всего лишь говорит "а пошли-ка {!ManagerEmail} в качестве параметра запроса, который будет доступен через currentPage.getParameters().get('address'), {!EmailSubject} как 'subject' и т.д.", поэтому метод sendMail() должен быть без атрибутов. BTW, вам ещё как минимум необходимо прописать явные/неявные getter'ы для полей класса к которым вы обращаетесь на странице, например так:

public String ManagerEmail {get; set;}

public String EmailBody {get; set;}
public String EmailSubject {get; set;}

Правда не совсем ясно зачем вы пробрасываете на сервер то что и так оттуда прилетело.

О! Давненько от Ильи никаких постов не было

Den Brown
О! Давненько от Ильи никаких постов не было :)

Прям с языка сорвал - Илья как всегда в своем стиле. Ответ четкий и по существу.
Меня даже начинает мучать сомнение - а не робот ли Илья Не припомню чтобы видел хоть одно сообщение на отвлеченные человеческие темы

Interesting information? Help us, post link to social media..