1

ユーザーが Visualforce ページを介して入力している日付フィールドを検証する必要があります。私のコードが期待する形式は「yyyy-MM-dd」です。

これを頂点で処理する最良の方法は何ですか。たとえば、SimpleDateFormat のような Apex では使用できない特定の標準クラスを使用する前に、Java で同様のことを行いました。

これで、正規表現を使用して「フォーマット」が正しいかどうかを確認できます。ただし、ユーザーが形式を満たす「9999-99-99」を入力できないようにする必要もあります。Salesforce に優れたソリューションが組み込まれていることを願っています。

ありがとう、カルビン

4

2 に答える 2

5

私が制御スプーフィングと呼んでいるものを試してみてください。基本的に、Task オブジェクト (または同様に軽量なもの) のような日付項目を持つ空の sObject を作成します。画面に、ネイティブの日付フィールドをレンダリングするタスク日付の入力を表示します。これを行うと、Salesforce がユーザーからの日付入力を検証し、ユーザーは素敵なカレンダー ポップアップも取得します。

これは、コントローラーでどのように見えるかのサンプルです

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>

save メソッドで行った書式設定に注目してください。Date では format を使用できませんが、DateTime では使用できるため、Date を DateTime に変換し、format メソッドを使用して日付をフォーマットします。

于 2012-08-07T02:16:47.893 に答える
0

とにかく少しユニークだったので、なんとか問題を解決できました。

そこで、正規表現を使用して、入力された日付の形式を検証し、yyyy-MM-dd 形式であることを確認しました。

私が使用Date.valueOf したこの組み込みメソッドは、常に yyyy-MM-dd の形式で日付を取得します。9999-99-99 などのような不適切な値がある場合は例外がスローされe.getMessage()ます。日付フィールドの検証を完了するために使用するユーザーに例外のメッセージを表示します。

于 2012-08-08T15:57:58.610 に答える