Ошибка VisualForce: значение Id недопустимо для стандартного контроллера Contact
Эта ошибка связана с тем, что идентификатор взят из!$User.Id нет!Contact.Id. Я не знаю, как решить эту проблему, потому что мне нужен contact.id. Поскольку я поместил страницу VF в пользовательскую ссылку, и я хочу, чтобы, когда пользователь щелкает по этой ссылке, заполнял информацию своими контактными полями. Ниже код для страницы VF:
<apex:page standardController="Contact">
<apex:form >
<apex:pageBlock >
<apex:pageBlockSection title="My Personal Information" >
<apex:outputField value="{!Contact.Name}" />
<apex:outputField value="{!Contact.Phone}"/>
<apex:outputField value="{!Contact.MobilePhone}"/>
<apex:outputField value="{!Contact.Email}"/>
<apex:outputField value="{!Contact.Birthdate}"/>
</apex:pageBlockSection>
<apex:pageBlockSection title="My Travel Information">
<apex:outputField value="{!Contact.Passport__c}"/>
<apex:outputField value="{!Contact.Expiration_Date__c}"/>
<apex:outputField value="{!Contact.VISA__c}"/>
<apex:outputField value="{!Contact.VISA_Expiration_Date__c}"/>
<apex:outputField value="{!Contact.European_Passport__c}"/>
<apex:outputField value="{!Contact.European_Passport_Expiration_Date__c}"/>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>
</apex:page>
Заранее спасибо!
1 ответ
Самый простой способ будет получить доступ к вашей странице VF с помощью ссылки, аналогичной /apex/YourPageName?id=003...
где 003...
Идентификатор контакта, который вы хотите показать.
Где вы разместили пользовательскую ссылку? Это будет работать лучше всего, если он находится на контакте или на чем-то связанном с контактом (может быть, случай или какой-то пользовательский объект, у которого есть поиск для контакта).
Можете ли вы опубликовать скриншот определения ссылки? Если это в контакте, просто измените тип ссылки на "Страница Visualforce", и все готово. Если это что-то еще (например, случай), то тип должен быть URL: /apex/YourPageName?id={!Case.ContactId}
,
Редактировать после комментариев / уточнений
Попробуйте что-то подобное (вам понадобится класс apex + страница VF):
public class PersonalInfoEditor{
public Contact con {get; set;}
public PersonalInfoEditor(){
List<Contact> contacts = [SELECT Id, FirstName, LastName, Phone, ... FROM Contact WHERE OwnerId = :UserInfo.getUserId() LIMIT 1]; // use your lookup instead of my OwnerId here
if(contacts.isEmpty()){
con = new Contact(OwnerId = UserInfo.getUserId()); // none found? let's prepare to save a new Contact for this user
} else {
con = contacts[0]; // found? then let's use him
}
}
public void save(){
upsert con;
}
}
<apex:page controller="PersonalInfoEditor" tabStyle="Contact">
<apex:form >
<apex:pageBlock >
<apex:pageBlockButtons location="bottom">
<apex:commandButton value="Save" action="{!save}" />
</apex:pageBlockButtons>
<apex:pageBlockSection title="My Personal Information" >
<apex:inputField value="{!con.Phone}" />
<apex:inputField value="{!con.Email}" />
...