JSF - 没有输入的UIInput组件将String属性设置为空字符串

时间:2010-12-03 14:56:20

标签: jsf jsf-2

我一直坚持这个问题已经有一段时间了。我发现了一篇早期文章,其中BalusC为JSF版本1.2创建了一个名为“EmptyToNullConverter”的转换器。 或在JSF 2.0中指定上下文参数

<context-param>
  <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
  <param-value>true</param-value>
</context-param>

这些选项都不适用于我。它对其他人有用吗?

对我自己进行一些调查后,我最终逐步完成了UIInput源代码。我可以看到值为null,直到它传递给ValueExpression。不幸的是,我没有这方面的资源,所以我无法进一步深入研究。我假设它在这里它最终实例化一个新的String Type而不是将它传递给model属性?

我的环境如下

  • 使用jsf-api-2.0.3和jsf-impl-2.0.3 jars运行Mojarra RI
  • 也使用richfaces 3.3.3,所以我不得不为jsf2禁用viewhandler。结果仍然使用facelets jar
  • 这一切都在Tomcat 6上运行

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

我知道使用Richfaces和Sun的默认JSF实现1.2时遇到了这个问题。 解决此问题的一种方法是使用您自己的自定义转换器,将您需要的空值(0,“”)转换为空值。

其他方法是在您的backingbean内进行转换:

MyBackingBean {

String myValue;

public void setMyValue(String v) {
  if (v==null || v.trim().length==0) {
    myValue==null;
  } else {
    myValue=v;
  }
}

public String getMyValue() {
  return myValue;
}

}