PrimeFaces 3.3.1日历在国际申请中禁用未来日期

时间:2012-06-28 20:38:01

标签: jsf primefaces

我正在Tomcat 6上使用Primefaces 3.3.1编写JSF 2.0 Mojarra应用程序。使用PrimeFaces <p:calendar>组件,我需要禁用将来的日期。我意识到我必须将maxdate属性设置为当前日期。但是,我不确定最简单的方法是什么。

我意识到我可以创建java.util.Date的托管Bean,但这是一个国际应用程序,我需要考虑用户的位置。如果用户位于世界的另一端,则服务器日期对他来说可能不正确。

那么,在用户所在位置检索当前日期的最简单方法是什么,并将<p:calendar> maxdate属性设置为该值?完全客户端解决方案将是理想的,如果可能的话。

4 个答案:

答案 0 :(得分:5)

作为主要成员 - Cagatay Civici 已经声明,出于这个原因,您可以使用p:calendar maxDate。因为我不想把我的facelets与JS混在一起,这就是我做的方式:

faclet:

<p:calendar maxdate="#{bean.today}" />

豆:

public Date getToday() {
        return new Date();
    }

所以没有未来可供选择。

答案 1 :(得分:0)

您可以获取客户端系统日期。

<p:calendar> calendar是一个jquery-ui小部件,您可以通过定义widgetVar并使用javascript设置maxdate来让客户端访问它。

<p:calendar widgetVar="myCalendar" />
<script type="text/javascript">
     jQuery(document).ready(function(){
        myCalendar.jqEl.datepicker("option", "maxDate", +0);//set maxDate to today
     });     
</script>

答案 2 :(得分:0)

我们也可以使用faces-config.xml来定义currentDate bean

enter code here
<managed-bean>
    <managed-bean-name>currentDate</managed-bean-name>
    <managed-bean-class>java.util.Date</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
</managed-bean>

然后在.xhtml

中使用它
<p:calendar maxdate="#{currentDate}" />

答案 3 :(得分:-2)

比这更简单 它禁用所有过去的日期,直到当天