【发布时间】:2014-07-18 19:53:08
【问题描述】:
我创建了一个带有支持 bean 的小型 XPage 搜索表单。这对字符串很有效,一切都使用表达式语言绑定,我可以访问我的 bean 中的值来组成实际的搜索字符串。
但是,这似乎不适用于日期。我有一个如下所示的日期字段:
<xp:inputText
themeId="Field.Date"
id="inputStartDate" value="#{Search.calStart}">
<xp:this.converter>
<xp:convertDateTime type="date"></xp:convertDateTime>
</xp:this.converter>
</xp:inputText>
我的 bean 有一个非常基本的 getter/setter:
public Date getCalStart() {
return calStart;
}
public void setCalStart(Date calStart) {
this.calStart = calStart;
}
问题在于,虽然该字段将从支持 bean 填充,但该 bean 不受该字段的影响。因此,如果在我的构造函数中将日期字段设置为 2014 年 7 月 18 日,它在我的页面上看起来不错。但是如果我在页面上选择一个日期并执行刷新,bean 中的值不会改变。日期仍然是 null 或我在 bean 中初始化它们的任何内容。
转换器是否存在破坏值绑定的问题(除了在我的 bean 中将其作为 Java Date 处理,我正在这样做)?
【问题讨论】:
-
看起来不错。你是如何进行刷新的?它来自提交按钮吗?是整页刷新还是部分刷新?还只是为了仔细检查getter正在访问您的bean,如果您在构造函数中将初始值更改为过去的日期,新值是否显示?我认为有时今天的日期会根据多米诺骨牌版本显示为默认日期
-
你也可以检查一下你的bean中的import语句,肯定是java.util.Date吗?有时 IDE 会选择 java.sql.Date 之类的东西
-
只是检查...没有转换器也能正常工作,对吧?
-
感谢所有这些回复。 @CameronGregor - 我有按钮尝试部分刷新和完全刷新。我很确定我使用的是 java.util.Date。
-
@DavidLeedy - 我刚刚从 xsp 中删除了转换器,并将我的 bean 中的所有内容都更改为 String,它运行良好。