jsf+spring+jpa 程序中遇到的N多异常及解决办法
2013-03-22 15:59
453 查看
话不多说,直接上问题或异常及其解决办法。
1、现象:程序无异常,但jsf 标签在jsp页无法使用,各种<h:commandButton />和<h:outputText/>都无法正常显示,可能是我之前没那么粗心,以至于现在少了个空格,真是要命
2
这个异常就是说找不到persistenc.xml网上查了好多高级的解决办法,但我还是没有解决,都是说src下建一个META-INF,放入persistence.xml文件,但是我真是粗心到家了,像这种的文件前面明显的空格,我竟然没看清,也是因为第一次搞这个jsf,其实这个文件是死的
看到了吧,这文件有固定图标。
3、完事具备,页面也正常显示了,觉得可以使用spring注入,jpa管理数据库了,其实在faces-config.xml里需要一个spring和jsf的配置,
这里防止bean对象绕过spring的配置(说的不太清楚,反正这个配置文件是死的。)
4、spring注解:注解需要有两个,在service类里,
@Transactional// 注解1
public class UserService implements IUserService {这里对类进行注解,但是还没完,需要对EntityManager再做一个set方法的注解,否则在进行增删改查时会发现em是null,那时候你想破脑袋都不知道是怎么回事,自然是没get到值了:
这个是针对unit只有一个,默认写,这里还一种写法,是指明name的,网上资料一大片,不再赘述。
5、然后就是在bean里对实体类,例如user和service类如userService,进行注入,有时候觉得自己牛逼,往往忽略了get方法,这里一定要写上,并且在展示页面上,一定是
这样子的,不可user.name因为还少一层。可能大部分人会犯一些高级错误,而我就犯这样的低级问题,而这样的问题也最气人,解决完也无任何成就感。
6、jsf遍历:这个时候终于能够遍历传过来的list了,
但是如果你用user.id会出现空值,而列数确实一列也不少,这是为啥,因为user这个名让你用烂了,增加的时候
这里用的user.name而你在显示时还是user.name就不好了,和session有关,我是这么认为的,如有不对,欢迎留言改正。
ps:最近各种Exception是搞得我头都大了,好在有同事可以问,所有有时实在解决不了也没什么,我们完全可以往上抛异常,有时候人的能力不在于你能解决什么,而是知道直接不能解决什么,大胆承认,认清自己的优缺点,才是人才。
欢迎关注微博:weibo.com/javawang
三爷不是我1 微博名@三爷不是我1,有任何问题可给我留言
1、现象:程序无异常,但jsf 标签在jsp页无法使用,各种<h:commandButton />和<h:outputText/>都无法正常显示,可能是我之前没那么粗心,以至于现在少了个空格,真是要命
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>这里 @和taglib直接是需要空格!
2
javax.persistence.PersistenceException: No Persistence provider for EntityManager named
这个异常就是说找不到persistenc.xml网上查了好多高级的解决办法,但我还是没有解决,都是说src下建一个META-INF,放入persistence.xml文件,但是我真是粗心到家了,像这种的文件前面明显的空格,我竟然没看清,也是因为第一次搞这个jsf,其实这个文件是死的
看到了吧,这文件有固定图标。
3、完事具备,页面也正常显示了,觉得可以使用spring注入,jpa管理数据库了,其实在faces-config.xml里需要一个spring和jsf的配置,
<application> <locale-config> <default-locale>zh_CN</default-locale> </locale-config> <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver> </application>
这里防止bean对象绕过spring的配置(说的不太清楚,反正这个配置文件是死的。)
4、spring注解:注解需要有两个,在service类里,
@Transactional// 注解1
public class UserService implements IUserService {这里对类进行注解,但是还没完,需要对EntityManager再做一个set方法的注解,否则在进行增删改查时会发现em是null,那时候你想破脑袋都不知道是怎么回事,自然是没get到值了:
@PersistenceContext // 注解2 public void setEm(EntityManager em) { this.em = em; }
这个是针对unit只有一个,默认写,这里还一种写法,是指明name的,网上资料一大片,不再赘述。
5、然后就是在bean里对实体类,例如user和service类如userService,进行注入,有时候觉得自己牛逼,往往忽略了get方法,这里一定要写上,并且在展示页面上,一定是
用户id:<h:outputText value="#{userBean.user.id}"/> 用户名:<h:inputText value="#{userBean.user.name}"/>
这样子的,不可user.name因为还少一层。可能大部分人会犯一些高级错误,而我就犯这样的低级问题,而这样的问题也最气人,解决完也无任何成就感。
6、jsf遍历:这个时候终于能够遍历传过来的list了,
<h:dataTable value="#{userBean.userList}" var="ub" styleClass="styleClazz" headerClass="headerClazz" footerClass="footerClazz" rowClasses="row1,row2" columnClasses="column1"> <h:column> <f:facet name="header"> <h:outputText value="id" /> </f:facet> <h:outputText id="id1" value="#{ub.id}" /> <f:facet name="footer"> <h:outputText value="****"/> </f:facet> </h:column> <h:column> <f:facet name="header"> <h:outputText value="Name" /> </f:facet> <h:outputText value="#{ub.name}" /> <f:facet name="footer"> <h:outputText value="****"/> </f:facet> </h:column>
但是如果你用user.id会出现空值,而列数确实一列也不少,这是为啥,因为user这个名让你用烂了,增加的时候
<title>增加用户</title> </head> <body> <h:form > <h3>用户信息</h3> <h:panelGrid columns="2" cellpadding="5" styleClass="styleClazz" headerClass="headerClazz" footerClass="footerClazz" rowClasses="row1,row2" columnClasses="column1"> 用户名:<h:inputText value="#{user.name}"/> 地址:<h:inputText value="#{user.addr}" />
这里用的user.name而你在显示时还是user.name就不好了,和session有关,我是这么认为的,如有不对,欢迎留言改正。
ps:最近各种Exception是搞得我头都大了,好在有同事可以问,所有有时实在解决不了也没什么,我们完全可以往上抛异常,有时候人的能力不在于你能解决什么,而是知道直接不能解决什么,大胆承认,认清自己的优缺点,才是人才。
欢迎关注微博:weibo.com/javawang
三爷不是我1 微博名@三爷不是我1,有任何问题可给我留言
相关文章推荐
- springmvc+jpa+springdata中遇到的错误解决办法
- SpringBoot JPA MySQL 遇到中文乱码的解决办法
- Linux下eclipse编译C/C++程序遇到 undefined reference to `pthread_create'的异常解决办法
- win7安装oracle 10g时发生“程序异常终止。发生内部错误”的提示 解决办法
- unity脚本编辑 Visual Studio2017 遇到了异常,这可能是由某个扩展所致的,完美解决办法
- 外接程序 VMDebugger 未能加载或导致了异常的解决办法
- Tomcat 7.0.3x 启动慢并且遇到StackOverflowError的异常的解决办法
- lucene使用IndexWriter时遇到LockObtainFailedException: Lock obtain timed out 异常原因及解决办法
- 真机运行,程序一打开就报异常解决办法
- WPF PasswordBox鼠标进入时程序异常退出的解决办法
- Hadoop安装遇到的各种异常及解决办法
- 第三周作业:程序模块开发遇到的问题及部分解决办法
- 程序锁遇到的问题及解决办法
- windows 下 py2exe 打包程序时遇到的问题及解决办法
- 今天遇到一个关于Hibernate程序的异常!请高手帮我解决下!!
- Spring Data JPA applicationContext.xml 配置文件报错的解决办法
- 项目中遇到的涉及Mysql的几个异常及解决办法
- Spring3与hibernate4整合,sessionFactory.getCurrentSession()方法获取不到Session对象异常解决办法
- Android ADT插件更新后程序运行时抛出java.lang.VerifyError异常解决办法
- IIS发布mvc程序遇到的HTTP错误 403.14-Forbidden解决办法