我需要驗證用戶通過Visualforce頁面輸入的日期字段。 我的代碼需要的格式是「yyyy-MM-dd」。Salesforce Apex:驗證格式和值的日期
在頂點處理這個問題的最好方法是什麼?在使用某些在Apex中不可用的標準類(例如SimpleDateFormat)之前,我已經在Java中做了類似的東西。
現在我可以使用正則表達式檢查「格式」是否正確。但我也必須防止用戶輸入滿足格式的「9999-99-99」。我希望Salesforce有一個很好的內置解決方案。
感謝, 卡爾文
我需要驗證用戶通過Visualforce頁面輸入的日期字段。 我的代碼需要的格式是「yyyy-MM-dd」。Salesforce Apex:驗證格式和值的日期
在頂點處理這個問題的最好方法是什麼?在使用某些在Apex中不可用的標準類(例如SimpleDateFormat)之前,我已經在Java中做了類似的東西。
現在我可以使用正則表達式檢查「格式」是否正確。但我也必須防止用戶輸入滿足格式的「9999-99-99」。我希望Salesforce有一個很好的內置解決方案。
感謝, 卡爾文
我設法解決我的問題,因爲它有點獨特。
所以我用一個正則表達式來驗證輸入日期的格式,以確保它是yyyy-MM-dd格式。
我用Date.valueOf
這個內置的方法總是以yyyy-MM-dd的形式取得一個日期。它會拋出一個異常,如果它有一個不好的值像9999-99-99等....我顯示異常的消息給用戶使用e.getMessage()
來完成我的日期字段驗證。
你可以試試我所說的控制欺騙。我基本上創建了一個空的sObject,它有一個類似於Task對象的日期字段(或類似的輕量級)。在屏幕上,我顯示將顯示本地日期字段的任務日期的輸入。這樣做可以讓銷售人員驗證用戶輸入的日期,並且用戶也可以獲得良好的日曆彈出窗口。
這裏是什麼看起來像在控制器
public class MyController {
public Task DateInput {get;set;}
public MyController() {
DateInput = new Task();
}
public void save() {
Date dInputDate = DateInput.ActivityDate;
//Format Date
DateTime dtValue = DateTime.newInstance(dInputDate.year(), dInputDate.month(), dInputDate.day());
string sFormattedDate = dtValue.format('yyyy-MM-dd');
}
}
這裏的樣本是頁面將是什麼樣子
<apex:page controller="MyController">
<apex:form>
<apex:pageBlock>
<apex:pageBlockSection>
<apex:pageBlockSectionItem>
<apex:outputLabel for="inputDate" value="My Date"/>
<apex:inputField value="{!DateInput.ActivityDate}" />
</apex:pageBlockSectionItem>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>
</apex:page>
你注意到我在保存方法做了格式化。你不能在Date上使用格式,但你可以在DateTime上,所以我只是將Date轉換爲DateTime,然後使用format方法來格式化我的日期。
嘿約翰感謝您的回覆,我很久以前嘗試這種方法(因爲salesforce沒有一個體面的日期元素的視覺效果),但我決定使用JavaScript的自定義日期選擇器,因此走在不同的路線。我使用HTML輸入字段獲取日期。我昨天確實找到了解決我的問題的方法。 – 2012-08-08 15:54:37