Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 使用primefaces的converDateTime中的时区_Jsf_Jsf 2_Primefaces_Calendar_Timezone - Fatal编程技术网

Jsf 使用primefaces的converDateTime中的时区

Jsf 使用primefaces的converDateTime中的时区,jsf,jsf-2,primefaces,calendar,timezone,Jsf,Jsf 2,Primefaces,Calendar,Timezone,PrimeFaces组件有问题。我的代码与页面中的代码相同 我使用的组件只显示时间。 这是mi代码 Time.xhtml 问题是当我运行应用程序时,日历又增加了六个小时 可能是时区?我怎样才能解决这个问题 使用时区时,一个好的策略是: 使用默认时区存储日期。就我个人而言,我更喜欢在我的tomcat、mysql等中使用UTC时区,尽管这并不是真的必要 在视图中处理时区本地化。在primefaces中,大多数与日期相关的组件(如calendar或Schedule)将使用时区属性,该属性将处理到本地

PrimeFaces组件有问题。我的代码与页面中的代码相同 我使用的组件只显示时间。 这是mi代码

Time.xhtml

问题是当我运行应用程序时,日历又增加了六个小时


可能是时区?我怎样才能解决这个问题

使用时区时,一个好的策略是:

使用默认时区存储日期。就我个人而言,我更喜欢在我的tomcat、mysql等中使用UTC时区,尽管这并不是真的必要 在视图中处理时区本地化。在primefaces中,大多数与日期相关的组件(如calendar或Schedule)将使用时区属性,该属性将处理到本地时间的日期转换、节省日间时间的DST等。 例如:

确保提供时区字符串键,而不是UTC/GMT偏移。 你可以找到你的时区键


最后一件事:当使用timeOnly属性时,p:calendar仍将存储java.util.Date,并且年、月和日将默认为今天。确保这不会是DST的问题。始终测试应用程序的DST更改。

首先,我不使用fail fast java.util.Date API,但在这种情况下,我无法在只有一个XHTML文件的空白项目上重现此问题。我还尝试了一个真实的应用程序。小时和分钟显示在上,与通过输入时完全相同,无需设置与关联的时区属性。
<h:form id="form">

    <p:growl id="msgs" showDetail="true" />

    <h:panelGrid columns="2" cellpadding="5">

        <p:outputLabel for="time" value="Time:" />
        <p:calendar id="time" value="#{calendarView.date11}" pattern="HH:mm a" timeOnly="true"  />
    </h:panelGrid>

    <p:commandButton value="Submit" update="msgs" actionListener="#{calendarView.click}" icon="ui-icon-check" />

    <p:dialog modal="true" resizable="false" header="Values" widgetVar="dlg" showEffect="fold">
        <p:panelGrid id="display" columns="2" columnClasses="label,value">

            <h:outputText value="Time:" />
            <h:outputText value="#{calendarView.date11}">
                <f:convertDateTime pattern="HH:mm a" />
            </h:outputText>
        </p:panelGrid>
    </p:dialog>
</h:form>
private Date date11;

public void click() {
    RequestContext requestContext = RequestContext.getCurrentInstance();

    requestContext.update("form:display");
    requestContext.execute("PF('dlg').show()");
}

public Date getDate11() {
    return date11;
}

public void setDate11(Date date11) {
    this.date11 = date11;
}
<p:calendar id="time" value="#{calendarView.date11}" pattern="HH:mm"
    timeOnly="true" 
    timeZone="Europe/Warsaw" />