Jsf 如何告知呈现程序发生了ConversionException?
在JavaServerFaces2.2(JakartaServerFaces)中使用自定义组件的第一步中,我遇到了一些问题 我的问题是,渲染器类如何知道是否抛出了ConverterException?我需要在渲染器中进行此检查,因为我希望渲染器将“无效”类应用于HTML输入标记。转换器仅用于此自定义组件 以下是我研究过的一些事情,但我不相信这些都是正确的方法Jsf 如何告知呈现程序发生了ConversionException?,jsf,converters,custom-renderer,Jsf,Converters,Custom Renderer,在JavaServerFaces2.2(JakartaServerFaces)中使用自定义组件的第一步中,我遇到了一些问题 我的问题是,渲染器类如何知道是否抛出了ConverterException?我需要在渲染器中进行此检查,因为我希望渲染器将“无效”类应用于HTML输入标记。转换器仅用于此自定义组件 以下是我研究过的一些事情,但我不相信这些都是正确的方法 该方法是isValidationFailedfromFacesContext不适用于转换错误。所以这是一条死胡同 我可以使用属性“inv
isValidationFailed
fromFacesContext
不适用于转换错误。所以这是一条死胡同
UIInput
创建自己的类,并在Converter
类的getAsObject
方法中设置该属性,以防出现任何中断。渲染器然后检查组件类的属性
FacesContext
迭代getMessages
,并从转换器中查找消息
h:message
方法,在客户端执行一些JavaScript DOM操作。如果我发现一个带有特定类的h:message,我会将另一个类应用于输入标记
- 该组件是一个
ui输出
- 您感兴趣的是
是否引发异常,而不是getastring()
是否引发异常(这仅适用于getAsObject()
组件,通常仅在提交的输入值需要转换为bean属性时才会调用)UIInput
- 转换器由渲染器(间接)调用
Object modelValue = getValue();
String outputValue;
try {
outputValue = getConverter().getAsString(context, component, modelValue);
}
catch (ConverterException e) {
outputValue = "Conversion error occurred! " + e.getMessage();
}
responseWriter.write(outputValue);
UIInput
已经有一个isValid()
方法。这不是有用吗?@BalusC所以我应该用第二种方法?从UIInput扩展并在转换器类中设置有效(false)?哦?转换器是否连接到非UIInput
组件?这是出乎意料的。为什么要使用这种方法?@BalusC,因为我不太清楚,我认为setValid只适用于验证程序,可能会有其他副作用。我不是这个意思。您询问是否从UIInput
扩展。这意味着要使用自定义渲染器渲染的组件根本不是UIInput
。只是这出乎意料。