Resolved as follows:
Controller code (partial):
Account acct;
public String salutation {get; set;}
public String fname{get; set;}
public String lname{get; set;}
public PageReference save() {
try {
// check for person account record type
recType = [select id,name,sobjectType,ispersontype from recordType where ispersontype=true and sobjectType='account' limit 1];
if(acct.recordtypeid == recType.id) {
acct.Salutation=salutation;
acct.FirstName=fname;
acct.LastName=lname;
insert(acct);
PageReference newPage = New PageReference('/'+acct.id);
newPage.setRedirect(true);
return newPage;
}
else {
insert(acct);
PageReference newPage = New PageReference('/'+acct.id);
newPage.setRedirect(true);
return newPage;
}
}
catch(System.DMLException e) {
ApexPages.addMessages(e);
return null;
}
return null;
}
Visualforce code (partial):
<apex:pageblocksectionitem >
<apex:outputlabel value="First Name"/>
<apex:outputpanel >
<apex:inputText value="{!salutation}" id="personSalutation"/>
<apex:inputText value="{!fname}" id="personFname"/>
</apex:outputpanel>
</apex:pageblocksectionitem>
<apex:pageBlockSectionItem>
<apex:outputLabel value="Last Name" for="personLname"></apex:outputLabel>
<apex:inputText value="{!lname}" id="personLname"/>
</apex:pageBlockSectionItem>