如何告诉呈现器发生ConversionException



在JavaServerFaces2.2(JakartaServerFaces(中使用自定义组件的第一步时,我有点卡住了。

我的问题是,渲染器类如何知道是否抛出了ConverterException?我需要在我的呈现器中进行此检查,因为我希望呈现器将"无效"类应用于HTML输入标记。转换器仅用于此自定义组件。

以下是我研究过的一些事情,但我不相信这些都是正确的方法。

  1. FacesContext中的isValidationFailed方法不适用于转换错误。所以这是一条死胡同。

  2. 我可以用属性"invalid"从UIInput创建自己的类,并在Converter类的getAsObject方法中设置该属性,以防出现任何问题。然后,渲染器检查组件类的属性。

  3. 我可以从FacesContext迭代getMessages,并从转换器中查找消息。

  4. 我可以使用h:message方法,并在客户端进行一些JavaScriptDOM操作。如果我找到一个带有特定类的h:message,我会将另一个类应用于输入标记。

  5. 跳过渲染器,在组件类中进行渲染。但不确定这是否给了我什么。

提前感谢!

给定以下事实:

  • 该组件是一个UIOutput
  • 您感兴趣的是getAsString()是否抛出异常,而不是getAsObject()是否抛出异常(这只适用于UIInput组件,通常只有在提交的输入值需要转换为bean属性时才会调用(
  • 转换器由渲染器(间接(调用

那么答案就是简单地将转换器调用放入try-catch中。例如

Object modelValue = getValue();
String outputValue;
try {
outputValue = getConverter().getAsString(context, component, modelValue);
}
catch (ConverterException e) {
outputValue = "Conversion error occurred! " + e.getMessage();
}
responseWriter.write(outputValue);

相关内容

  • 没有找到相关文章

最新更新