JSF:无法在u:repeat中的h:inputText中设置空值

时间:2012-10-26 17:51:46

标签: jsf

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设置为非null /非空的东西,它就可以正常工作 当我这样做时,忽略空输入并恢复旧值。

日期的类似结果。

如果我从ui:repeat中删除对var / status的引用没有区别。即使显式引用#{bean.items [0] .longProperty}也会失败。

同样精确的h:inputText在ui之外正常工作:repeat和null / empty值工作正常。

此外,内部 a ui:repeat,空字符串工作正常,如果属性是String而不是需要转换的对象。

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

知道发生了什么事吗?

3 个答案:

答案 0 :(得分:1)

用ui:repeat

证明了它的Mojarra / JSF实现错误

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

答案 1 :(得分:0)

现在重复一遍,在这里(由Roger Kitain饰演):

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

答案 2 :(得分: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>错误的详情。