我遇到了转换器和验证器的问题。
我有一个带有CSV列表的输入文本。我有一个转换器,将其转换为String列表。一切正常。虽然我想让这个领域成为必需的。但是对于转换器,它似乎忽略了我附加的任何验证器以及输入上的必需属性。
如果值为空,我试图通过抛出转换器Exception来解决这个问题。这几乎可以工作,虽然它变得更复杂,因为我的表格上方有一个无线电组,其中立即=真。立即跳过验证器就好了,虽然似乎仍然尝试转换器。我能想到的下一个最好的事情是在我的操作中验证并手动添加faces消息,但我宁愿避免这种情况,因为我必须将客户端ID硬编码到Java类中。
知道如何正确地做到这一点吗?
答案 0 :(得分:1)
在验证器之前调用转换器。
在转换器内部,只需在提交的值为null
或空字符串时返回null
。
@Override
public String getAsObject(FacesContext context, UIComponent component, Object value) {
if (value == null || ((String) value).isEmpty()) {
return null;
}
// ...
}
当值为null或为空时,不应抛出转换器异常。这样验证器就不会被触发。转换器毕竟不应该验证该值,它应该只转换值。