根据主题内容,可以会有一个方法获取到contact的一些字段信息显示在页面上,也会有一个类似save的方法,来保存数据,并跳转回去,也会有一个cancel方法来取消操作,因此:
Controller:MyGetContactDetail
public class MyGetContactDetail {
//用来获取URL上的contactId
private String contactId = null;
//用来获取accountId,方便回到之前对应的contact页面
private String accountId = null;
//用来保存查询出来的当前contact的一些会被修改的基本信息
private Contact contactDetail=null;
//构造函数,在类进行初始化时就会允许其中的获取URL参数的代码,因此后面的方法中的变量值便会得到初始化
public MyGetContactDetail (){
contactId = ApexPages.currentPage().getParameters().get('Id');
accountId = ApexPages.currentPage().getParameters().get('AccountId');
//SOQL语句进行查询
contactDetail = [SELECT Name,Email,Description,AccountId,Id FROM Contact WHERE Id=:contactId ];
}
public Contact getContactDetail(){
//构造函数中以及获取了,直接返回
return contactDetail;
}
//PageReference这个修饰符就是用来返回页面page的
public PageReference save(){
update contactDetail;
//因为页面上的字段都是和这个类中查出来的contact绑定的,所以我们不需要再进行获取修改的值了,而是直接进行修改
//然后回到原来的页面
String url = '/apex/ContactList?&accountId='+contactDetail.accountId;
PageReference pageRef = new PageReference(url);
return pageRef;
}
//save与cancel唯一的区别就是一个对数据进行更新,一个不更新
public PageReference cancel(){
String url = '/apex/ContactList?&accountId='+contactDetail.accountId;
PageReference pageRef = new PageReference(url);
return pageRef;
}
}
VF Page:EditContact
<apex:page controller="MyGetContactDetail">
<apex:form >
<apex:pageBlock title="Edit Contact" id="contacts_Edit">
<apex:pageBlockSection columns="1">
<!--这里直接调用getContactDetail方法返回的参数再加上你要显示的字段-->
<apex:inputField value="{! contactDetail.Name }"/>
<apex:inputField value="{! contactDetail.Email }"/>
<apex:inputField value="{! contactDetail.Description }"/>
</apex:pageBlockSection>
<!--value="./EditContact?core.apexpages.request.devconsole=1"-->
<apex:pageBlockButtons >
<!--定义两个按钮并绑定两个方法-->
<apex:commandButton action="{! save }" value="Save" />
<apex:commandButton action="{! cancel}" value="Cancel" />
</apex:pageBlockButtons>
</apex:pageBlock>
</apex:form>
</apex:page>
该练习为本人实习课题,经过实测后才写入blog,文章若有指代不明或者有什么没有阐述清楚的地方,欢迎留言讨论,共同学习,谢谢!!