1

Mojarra 2.1.6 / Glassfish 3.1.2

我有这样的东西

<ui:repeat var="item" value="#{bean.items}">
  <h:inputText value="#{item.longProperty}"/>
</ui:repeat>

其中 Item 是具有 Long 属性的对象

public class Item { 
  private Long longProperty; // + getters/setters
}

只要我将 longProperty 设置为非空/非空,它就可以正常工作。
当我这样做时,将忽略空输入并恢复旧值。

日期的类似结果。

如果我从 ui:repeat 中消除对 var/status 的引用,这没有什么区别。即使明确引用 #{bean.items[0].longProperty} 也会以同样的方式失败。

完全相同的 h:inputText 在 ui:repeat 之外可以正常工作,而 null/empty 值也可以正常工作。

此外,ui:repeat 中,如果属性是字符串而不是需要转换的对象,则空字符串可以正常工作。

更奇怪的是:如果我在输入上放置一个 valueChangeEvent,我确实看到它event.getNewValue()在我期望的时候返回 null - 但是我的 setter 是用旧值调用的。

知道发生了什么吗?

4

3 回答 3

1

原来它是一个带有 ui:repeat 的 Mojarra / JSF 实现错误

http://java.net/jira/browse/JAVASERVERFACES-1721

于 2012-10-31T15:13:48.057 回答
0

现在复制,在这里(由罗杰基坦):

http://java.net/jira/browse/JAVASERVERFACES-2717

于 2013-01-30T19:03:53.883 回答
0

更改<ui:repeat><a4j:repeat>

<a4j:repeat var="item" value="#{bean.items}">
  <h:inputText value="#{item.longProperty}"/>
</a4j:repeat>

更多信息:Richfaces a4j:repeat

请参阅Problem with ui:repeat and NULL values in JSF 2.x 中有关该<ui:repeat>错误的更多信息。

于 2013-04-18T17:38:41.337 回答