1、今天出现了一个问题,在点击用户信息修改的时候,出现如下的错误:
Caused by: javax.el.PropertyNotFoundException: Target Unreachable, identifier 'userInfoUpdateBean' resolved to null,具体错误信息如下,其中项目是由JSF模板和Spring整合的:
严重: Error Rendering View[/pages/user/userInfoUpdate.xhtml]
javax.el.PropertyNotFoundException: /pages/user/userInfoUpdate.xhtml @36,65 value="#{userInfoUpdateBean.sex}": Target Unreachable, identifier 'userInfoUpdateBean' resolved to null
2、开始定位问题,从页面看下有没有问题,为啥这个userInfoUpdateBean为空呢,类名为UserInfoUpdateBean,然后再去找bean的配置文件,如下所示:
<bean id="userInfoUpdateBean" scope="view"
class="com.user.info.bean.userInfoUpdateBean"
init-method="init">
<property name="userInfoServiceI">
<ref bean="userInfoServiceImpl" />
</property>
</bean>
这里也没有问题呀,再去类底下看是不是setSex方法里面的属性写成大写了,发现也没有问题,添加多一个无参的构造方法都没用,还是依旧报错。后面想想是不是被拦截了,发现也没被拦截器拦截呀。
3、去找资料,改着试了几个小时都没用,最后,用另外一种方法,把界面报错的给注释掉,然后一步步看,到底问题是出现在哪里,后面发现,只有两个有单选框的标签才会出现这种问题,把我坑得不要不要的,顿时觉得自己好菜鸡,单选框原先是这样写的:
<p:selectOneRadio id="sex" initSelectItemLabel="男" value="#{userInfoUpdateBean.sex}">
<f:selectItem itemLabel="男" itemValue="男" />
<f:selectItem itemLabel="女" itemValue="女" />
</p:selectOneRadio>
4、就是因为这个selectOneRadio这个标签的initSelectItemLabel属性,给这个加了个属性,就会报上面的错误,最后去掉这个属性,便不会报这个错误了,最后代码如下:
<p:selectOneRadio id="sex" value="#{userInfoUpdateBean.sex}">
<f:selectItem itemLabel="男" itemValue="男" />
<f:selectItem itemLabel="女" itemValue="女" />
</p:selectOneRadio>
5、后面发现页面上虽然显示不会报错了,但是其实还是有问题的,initSelectItemLabel这个属性是不会影响的,这个只是初始化选择列表的标签,即单选框默认选择什么的。后面我对这个页面进行保存操作,还是依旧报错,信息还是一样:
Caused by: javax.el.PropertyNotFoundException: Target Unreachable, identifier 'userInfoUpdateBean' resolved to null
接着我就发现这个bean是不是找不到,就在Bean底下加了个注解@ManagedBean(name="userInfoUpdateBean"),发现竟然可以找到了,但是这不是我的始终,因为我还要执行初始化的init方法,并且我这个还是整合的Spring的,最后终于发现了,原来是没加载到这个配置bean的xml文件。
6、因为整合的时候需要加载的bean的xml文件统一导入在一个整体目录的applicationContext-beans.xml文件中,接着在这里面所在位置加上一行导入的语句如下:
<import resource="com/user/info/bean/configure/application-user-beans.xml" />
接着就可以进入初始化的方法,并且我们这边的initSelectItemLabel这个属性也起作用了,原因仅仅就是找不到bean,所以细节很重要啊。
7、以上就是我所遇到的坑,在这里积累一下,细节,细节,细节真的决定成败!