1

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

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

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

4

4 回答 4

5

正如 primefaces-chief Cagatay Civici已经说过的那样,您可以使用 p:calendar maxDate它。因为我不打算将我的 facelets 与 JS 混为一谈,所以我是这样做的:

方面:

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

豆:

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

所以没有未来可以选择。

于 2012-11-21T11:40:37.290 回答
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>
于 2012-06-28T22:26:41.473 回答
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}" />
于 2014-09-11T13:09:33.807 回答
-2

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

于 2013-03-11T21:36:48.520 回答