Error handling VisualForce错误:Id值对于联系人标准控制器无效

Error handling VisualForce错误:Id值对于联系人标准控制器无效,error-handling,contacts,visualforce,Error Handling,Contacts,Visualforce,此错误是由于Id来自$用户Id不是!联系电话。我不知道如何解决这个问题,因为我需要contact.id。因为我将VF页面放在一个自定义链接中,我希望当用户单击该链接时,用他们的联系人字段填充信息。下面是VF页面的代码: <apex:page standardController="Contact"> <apex:form > <apex:pageBlock > <apex:pageBlockSection tit

此错误是由于Id来自$用户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>

提前谢谢

最简单的方法是使用类似于/apex/YourPageName?id=003的链接访问VF页面。。。在哪里。。。是要显示的联系人的Id

您将自定义链接放置在何处?如果它是在Contact或与Contact相关的情况下,或者是在某个自定义对象上,并且该对象有一个要联系的查找,那么它将工作得最好

你能发布链接定义的截图吗?如果是“在联系人上”,则只需将链接类型更改为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}" />
          ...

你好谢谢你的回答。是主页上的自定义链接。我尝试使用VisualForce页面和URL作为内容源,这两个选项显示相同的错误:Id值[userId]对于联系人标准控制器无效。PS:我不知道如何在此页面中附加屏幕截图。很抱歉如果它在主页上,那么你想显示哪个联系人?你可以在链接中硬编码Id,但那将是一个奇怪的页面。或者,如果您决定此用户应该如何查看此联系人的数据有一定的逻辑,请发布它,然后编辑您的问题?点击问答编辑器中的图像图标可以添加图像。您需要联系人对象的信息还是此用户的信息?我不得不说我有点困惑…我会尽力解释这一点,是的,有点困惑。Salesforce的用户有与此相关的联系人记录。此外,我们有一个配置文件,只允许加载时间卡。是这些用户可以在系统上执行的唯一操作。现在我想允许他们编辑他们的个人信息。该个人信息位于联系人布局上。这就是为什么我想创建这个自定义链接,允许用户只编辑他们在VF页面上选择的字段的联系信息。