【发布时间】:2015-07-28 14:32:23
【问题描述】:
我正在进行网络应用程序升级,其中涉及以下两个升级
JSF 1.0 -> 2.x , Webspehere 7.0 -> 8.5
升级后,如果我切换到 WAS8.5 插件中提供的 myfaces 库,UI 中的某些元素往往会损坏。如果我将实现保留到 mojjara JSF2.0 库,它似乎工作正常。
我在使用 myFaces 2.0 时遇到的错误之一是
java.lang.IllegalArgumentException: Component javax.faces.component.UIInput is no javax.faces.component.html.HtmlInputText
发生这种情况是因为 <inputText> 类型为 javax.faces.component.html.HtmlInputText 标记具有与模型的绑定,该模型在 getter 的 model 方法中返回 new UIInput();。 (我知道这是一个糟糕的代码。但它是存在的,并且是为了使用默认值初始化文本字段而编写的)
我可以理解为什么这不起作用。因为HtmlInputText 是UIInput 的子类。当我们尝试绑定 Parent 类的对象时,预计会出现 Child 类,这个错误被抛出。这类似于我们尝试将父对象强制转换为子引用时
如果是这种情况,那么我的问题是相同的代码如何与 Mojjara JSF 实现一起工作。如果我切换到 Mojjara,我就不会遇到这个问题,这很令人惊讶。因为我也预料到了这个问题,因为代码违反了一般的父子类规则。
【问题讨论】:
标签: jsf jsf-2 websphere myfaces