java - 更新时区 f :convertDateTime

标签 java jsf primefaces timezone converter

当我更改 f:convertDateTimetimeZone 时这不会改变。

`<p:dataTable id="tabla2" value="#{bb.dataTable}" var="trm" resizableColumns="true"
    style="width : 1400px" editable="true" editMode="cell"
    rowStyleClass="#{styleController.daColoresParaEstadoTramos(trm, bb.fechaInicio)}"><p:column>
        <p:cellEditor>
            <f:facet name="output">
                <h:outputText value="#{trm.tramo.horaDespeguePrevista}">
                    <f:convertDateTime pattern="HH:mm" timeZone="#{bb.zonaH}" />
                </h:outputText>
            </f:facet>  
            <f:facet name="input">
                <p:inputMask value="#{trm.tramo.horaDespeguePrevista}" mask="99:99" >
                    <f:convertDateTime pattern="HH:mm" timeZone="#{bb.zona}" />
                </p:inputMask>
            </f:facet>
        </p:cellEditor>         
    </p:column></p:dataTable>`

zone 是一个元素 java.util.TimeZone .我使用 primefaces 3.5

最佳答案

我刚刚在我的应用程序中解决了类似的问题。问题在于 JSF 生命周期。像你一样,我收集了一组对象并使用 f:convertDateTime 作为每个对象的日期,使用时区值(我正在显示世界各地的预订)。

在 getter 中为我的预订列表设置一个断点,在 ConvertDateTimeHandler 中设置另一个断点我可以看到 JSF 试图在我从支持 bean 获得预订之前转换日期。

我使用的是 ui:repeat 并且能够通过切换到使用来自 JSTL 的 c:forEach 来解决问题。

如果您不需要 Primefaces 数据表,您也许可以做类似的事情。否则,您最好使用一个 transient getter,它返回一个已针对相关时区格式化的日期字符串。

证明这一点的一种快速方法是获取集合中的第一个对象并将其放入 h:outputText 以及 f:convertDateTime。如果转换正确,则尝试使用数据表的替代方法。

关于java - 更新时区 f :convertDateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17271740/

相关文章:

java - 关于SymmetricDS Embedded的一些问题

Spring session bean 将 FacesContext.getCurrentInstance() 视为 Null 引用

java - JSF-c :forEach Not Working On Recursive Method

java - 负节点寻路

java - 如何制作不需要任何人下载任何东西的软件

java - MediaPlayer start()/stop() mUri 为 null

jsf - 在构建或部署期间检查 Facelets 文件的完整性

java - Openshift - 这个命令是什么意思? oo-cgroup-读取内存.failcnt

eclipse - 简单的primefaces应用程序不起作用

java - 使用 JSF、PrimeFaces 和 JPA : Create Basic WebApp without using Generated CRUD Classes, 表单等