myfaces与mojarra(JSF RI)处理空属性类型的不同

最近写了一点JSF程序,在使用mojarra的时候没有问题,但是改为myfaces为就会报错,错误是ClassNotFoundException,但是没说明到时是那个Class没找到,这个问题搞了好久才发现原来是某个ManageBean的property的class设置为空,如下:

<managed-property>
            <property-name>travel</property-name>
            <property-class></property-class>
            <value>#{travel}</value>
        </managed-property>

mojarra在处理这个空的property-class属性时候,会自动辨别,若是空的,则自己会通过反射去查找class,而myfaces的处理则不同,他会傻傻的去加载一个空的class,而且这种错误很难找,系统没办法告诉我那个class没有找到。我没有看过jsf规范,不清楚规范怎么规定这个的,不过可以看出JSF的兼容性只停留在理论上。

由于我使用的是eclipse的wtp可视化工具来编辑faces-config,这个工具比较垃圾,我若是没选class的话,就设置一个空的,而不会不使用property-class属性。看来可视化工具还是不好,还写手写的好,至少可以控制一切,尤其在java领域,工具还没有VS studio那么强大,很多时候,还是相信自己的手。

你可能感兴趣的:(myfaces与mojarra(JSF RI)处理空属性类型的不同)