javax.faces.FacesException: Expression Error: Named Object: myConverter not found
javax.faces.FacesException: Expression Error: Named Object: myConverter not found
我相信我所有的接线都正确,但转换器在我的 xhtml
中仍然无法识别,我有以下代码:
<p:selectOneMenu ... value="#{myBean.myObject}" converter="myConverter">
...
</p:selectOneMenu>
其中 myConverter
是我用来对 myObject
对象执行 Object - String
和 String - Object
转换的转换器([=19= 类型的实例) ] 下面)。
这是 myConverter
代码的相关部分:
@FacesConverter (value="myConverter", forClass = MyType.class)
public class MyConverter implements Converter {
...
}
尽管有上面的配置,我还是得到了错误:
javax.faces.FacesException: Expression Error: Named Object: myConverter not
found
我提到了 similar question(缺少上述配置),它建议通过修改 faces-config.xml
来替代,但我认为上述配置应该也能正常工作?无论如何,我也尝试了 xml 方法 - 这是配置的相关部分:
<faces-config ...>
<converter>
<converter-id>myConverter</converter-id>
<converter-class>myPackage.MyConverter</converter-class>
</converter>
</faces-config>
配置真的有问题吗?我看到示例 here 做完全相同的事情!
编辑:
好的,堆栈跟踪揭示了一些更有用的信息:
javax.faces.FacesException: Expression Error: Named Object: myConverter not found.
我看到转换器名称(转换器 ID)后有多余的空格;我试图在远程调试期间修改它的值以删除末尾的空格,它找到了我的转换器(虽然后来我遇到了 NPE,但我想我可以接受它)!关于为什么将这些空格附加到我的转换器名称(或 id)的末尾有什么明显的吗?
好的,我找到了导致在转换器 ID 末尾插入额外空格的原因。
这是我之前的确切代码:
<p:selectOneMenu ... converter="myConverter"
filter="true" filterMatchMode="contains" editable="false">
我改成了:
<p:selectOneMenu ...
converter="myConverter" filter="true" filterMatchMode="contains" editable="false">
注意新行中的转换器属性!我不确定我是否遗漏了关于属性的 formatting/rendering 规则的一些明显的东西,但至少可以说这种行为似乎很尴尬!
我相信我所有的接线都正确,但转换器在我的 xhtml
中仍然无法识别,我有以下代码:
<p:selectOneMenu ... value="#{myBean.myObject}" converter="myConverter">
...
</p:selectOneMenu>
其中 myConverter
是我用来对 myObject
对象执行 Object - String
和 String - Object
转换的转换器([=19= 类型的实例) ] 下面)。
这是 myConverter
代码的相关部分:
@FacesConverter (value="myConverter", forClass = MyType.class)
public class MyConverter implements Converter {
...
}
尽管有上面的配置,我还是得到了错误:
javax.faces.FacesException: Expression Error: Named Object: myConverter not found
我提到了 similar question(缺少上述配置),它建议通过修改 faces-config.xml
来替代,但我认为上述配置应该也能正常工作?无论如何,我也尝试了 xml 方法 - 这是配置的相关部分:
<faces-config ...>
<converter>
<converter-id>myConverter</converter-id>
<converter-class>myPackage.MyConverter</converter-class>
</converter>
</faces-config>
配置真的有问题吗?我看到示例 here 做完全相同的事情!
编辑: 好的,堆栈跟踪揭示了一些更有用的信息:
javax.faces.FacesException: Expression Error: Named Object: myConverter not found.
我看到转换器名称(转换器 ID)后有多余的空格;我试图在远程调试期间修改它的值以删除末尾的空格,它找到了我的转换器(虽然后来我遇到了 NPE,但我想我可以接受它)!关于为什么将这些空格附加到我的转换器名称(或 id)的末尾有什么明显的吗?
好的,我找到了导致在转换器 ID 末尾插入额外空格的原因。
这是我之前的确切代码:
<p:selectOneMenu ... converter="myConverter"
filter="true" filterMatchMode="contains" editable="false">
我改成了:
<p:selectOneMenu ...
converter="myConverter" filter="true" filterMatchMode="contains" editable="false">
注意新行中的转换器属性!我不确定我是否遗漏了关于属性的 formatting/rendering 规则的一些明显的东西,但至少可以说这种行为似乎很尴尬!