我正在Tomcat 6上使用Primefaces 3.3.1编写JSF 2.0 Mojarra应用程序。使用PrimeFaces <p:calendar>
组件,我需要禁用将来的日期。我意识到我必须将maxdate属性设置为当前日期。但是,我不确定最简单的方法是什么。
我意识到我可以创建java.util.Date
的托管Bean,但这是一个国际应用程序,我需要考虑用户的位置。如果用户位于世界的另一端,则服务器日期对他来说可能不正确。
那么,在用户所在位置检索当前日期的最简单方法是什么,并将<p:calendar>
maxdate属性设置为该值?完全客户端解决方案将是理想的,如果可能的话。
答案 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)
比这更简单 它禁用所有过去的日期,直到当天