For a string field, is there a way to get the defined length of the field? For example say I allow a maximum of 10 chars, can I get that in apex?
I am not asking how to get the length of a string (i.e. str.length()
).
You are looking for DescribeFieldResult.getLength()
:
For string fields, returns the maximum size of the field in Unicode characters (not bytes).
Schema.DescribeFieldResult F = Account.AccountNumber.getDescribe();
Integer lengthOfField = F.getLength();
This is pretty straightforward in both Apex and Visualforce using describes:
Apex:
Integer len = SObjectType.Object__c.Fields.Field__c.Length;
Visualforce:
{!$ObjectType.Object__c.Fields.Field__c.Length}
integer fieldLength = Schema.SObjectType.CustObj__c.fields.CustField__c.getLength();
for more info