使用 JSF2 (Myfaces 2.0.12) 发布对 WebSphere 的更改时遇到问题。
每次我向本地服务器 (WebSphere) 发布更改时,我都会收到 java.lang.VerifyError。完全重新启动服务器后,应用程序可以根据我的更改顺利运行。
java.lang.VerifyError: com/sun/faces/renderkit/html_basic/HtmlResponseWriter.startElement(Ljava/lang/String;Ljavax/faces/component/UIComponent;)V
StackTrace 表明 ResponseWriter 有问题,实际上我们在那里做了一些更改;-) 出于可访问性的原因,我必须完全控制 HTML,因此我需要自定义 HtmlRenderers。为了减少重复代码,我用自己的方式装饰了从 FacesContext 获得的 ResponseWriter,并在顶部提供了额外的便利方法。
public class CustomResponseWriter<T extends UIInput & MyFormdataInterface> extends HtmlResponseWriter
{
public CustomResponseWriter(ReponseWriter writer){
super(writer, writer.getContentType(), writer.getCharacterEncoding());
}
public writeFancy(T component)
{
...
writeText(component.getMyFanceAttribute(), null);
...
}
}
正如我所说,服务器重新启动后代码运行良好,所以我认为代码是正确的。但另一方面,此错误仅发生在我使用此 CustomReponseWriter 的页面上。
在新类中装饰 ResponseWriter 的想法有什么问题吗?或者这可能只是 WebSphere 中的一个问题?