我需要验证用户通过visualforce页面输入的日期字段。 我的代码期望的格式是“yyyy-MM-dd”。
在顶点处理此问题的最佳方法是什么?在使用某些标准类之前,我在Java中做了类似的事情,例如在SimpleDateFormat之类的Apex中没有。
现在我可以使用正则表达式检查“格式”是否正确。但我还必须阻止用户输入符合格式的“9999-99-99”。我希望Salesforce有一个很好的内置解决方案。
谢谢, 卡尔文
答案 0 :(得分:5)
你可能会尝试我称之为控制欺骗的东西。我基本上创建一个空的sObject,其日期字段类似于Task对象(或类似的轻量级)。在屏幕上,我显示任务日期的输入,该日期将呈现本机日期字段。这样做可以让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');
}
}
以下是Page的样子
<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上使用格式,但你可以在DateTime上,所以我只是将Date转换为DateTime,然后使用format方法格式化我的日期。
答案 1 :(得分:0)
伙计们我设法解决了我的问题,因为它有点独特。
因此,我使用正则表达式来验证输入日期的格式,以确保它采用yyyy-MM-dd格式。
我用Date.valueOf
这种内置方法总是采用yyyy-MM-dd形式的日期。如果它有一个像9999-99-99这样的错误值,它会抛出异常....我使用e.getMessage()
向用户显示异常消息,以完成对日期字段的验证。