JSF2转换并在相同的输入上需要

时间:2012-03-05 16:49:02

标签: jsf-2 myfaces

我遇到了转换器和验证器的问题。

我有一个带有CSV列表的输入文本。我有一个转换器,将其转换为String列表。一切正常。虽然我想让这个领域成为必需的。但是对于转换器,它似乎忽略了我附加的任何验证器以及输入上的必需属性。

如果值为空,我试图通过抛出转换器Exception来解决这个问题。这几乎可以工作,虽然它变得更复杂,因为我的表格上方有一个无线电组,其中立即=真。立即跳过验证器就好了,虽然似乎仍然尝试转换器。我能想到的下一个最好的事情是在我的操作中验证并手动添加faces消息,但我宁愿避免这种情况,因为我必须将客户端ID硬编码到Java类中。

知道如何正确地做到这一点吗?

1 个答案:

答案 0 :(得分:1)

在验证器之前调用转换器

在转换器内部,只需在提交的值为null或空字符串时返回null

@Override
public String getAsObject(FacesContext context, UIComponent component, Object value) {
    if (value == null || ((String) value).isEmpty()) {
        return null;
    }

    // ...
}

当值为null或为空时,不应抛出转换器异常。这样验证器就不会被触发。转换器毕竟不应该验证该值,它应该只转换值。