这是我的问题:
我需要一种不验证(已经完成)的方法,但是将用户输入格式化/转换为以下格式:MM / dd / yyyy
使用JSF和Primefaces,遗憾的是你无法使用p:maskinput和p:calendar或者我的问题非常容易解决。
我已经进行了搜索和搜索,并尝试了许多方法让它无法解决问题。
我相信我的解决方案在于此链接:http://digitalbush.com/projects/masked-input-plugin/
这是代码的样子:
<p:outputLabel value="#{originalreturned}: " />
<p:calendar value="#{origReturnedDate}"
showOn="button"
pattern="MM/dd/yyyy"
showButtonPanel="true"
navigator="true"
id="originalRetDate"
onblur="formatDate(id);"
size="10"
yearRange="#{commonUtils.getCalendarRange()}"
rendered="#{!isDocumentInquiryMode}">
<f:convertDateTime pattern="MM/dd/yyyy"/>
<f:attribute name="dateLabel" value="#{document_approved}"/>
</p:calendar>
<h:inputText id="date" value="#{origReturnedDate}" rendered="#{isDocumentInquiryMode}">
<f:convertDateTime pattern="MM/dd/yyyy" />
</h:inputText>
我只是不知道如何合并和使用上面链接中的插件,或者我是否有不同的方式?
我尝试在导入外部.js文件时遵循JSF和PrimeFaces的标准。但它根本不起作用。
感谢您对我提出的任何建议
答案 0 :(得分:2)
这是真的,为时已晚,但也许可以帮助其他人。你不能使用Mask但你可以使用正则表达式来表示例如:
<p:calendar value="#{MyBean.MyDate}" id="MyCalendar" effect="explode" >
<f:validateRegex pattern="^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$">
<p:ajax update="msgMyCalendar" event="keyup" />
</f:validateRegex>
</p:calendar>
<p:message for="MyCalendar" id="msgMyCalendar" display="icon"/>