stdControllerのgetRecord()を利用すればオブジェクトの情報を簡単に取得することができます。このgetRecord()で取得できる情報はsObject型です。
なので.put()を利用することで値をセットすることができます。初期値をセットしたいときや画面に表示していない項目に値をセットしたい場合はこれで対応できます。
ContractEdit.page
<apex:page standardController="Contract" extensions="ContractEditController">
<apex:form>
<apex:pageBlock>
<apex:pageBlockButtons location="bottom" id="button">
<apex:commandButton value="保存" action="{!Save}" />
<apex:commandButton value="キャンセル" action="{!Cancel}" />
</apex:pageBlockButtons>
<apex:pageBlockSection>
<apex:inputField value="{!Contract.StartDate}" />
<apex:inputField value="{!Contract.AccountId}" />
<apex:inputField value="{!Contract.ContractTerm}" />
<apex:inputField value="{!Contract.OwnerExpirationNotice}" />
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>
</apex:page>
ContractEditController
public with sharing class ContractEditController {
public ContractEditController(ApexPages.StandardController stdController) {
sObject sObj = stdController.getRecord();
sObj.put('Status', 'Draft');
sObj.put('StartDate', System.today());
sObj.put('ContractTerm', 1);
}
}