将Spring Roo与JSF 2.0 + Primefaces结合使用时的问题

时间:2013-01-07 18:41:37

标签: java spring jsf primefaces spring-roo

我在DZone上找到了this很酷的帖子:

我想尝试一下。 我一步一步地按照这个例子,它对我来说很有用。在不到5分钟的时间里,我开始编写并运行该Web应用程序。

我决定创建自己的应用程序只是为了好玩。但它没有用,我不明白为什么会这样。我相信我以完全相同的方式做了所有事情,但只使用我自己的变量名称。 以下是我所做的每一件事:

1-从我的linux终端创建了一个文件夹并导航到它

mkdir whatsup
cd whatsup

2-我启动了roo shell开始工作(我的ROO_HOME配置正确)

/roo.sh
  
   / __ \/ __ \/ __ \ 
  / /_/ / / / / / / / 
 / _, _/ /_/ / /_/ /  
/_/ |_|\____/\____/    1.2.1.RELEASE [rev 6eae723]


Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER.

3-我创建了项目定义

roo> project --topLevelPackage com.hack --projectName whats-up
Created ROOT/pom.xml
Created SRC_MAIN_RESOURCES
Created SRC_MAIN_RESOURCES/log4j.properties
Created SPRING_CONFIG_ROOT
Created SPRING_CONFIG_ROOT/applicationContext.xml

4-我启用了持久层

roo> persistence setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY
  

创建了SPRING_CONFIG_ROOT / database.properties已更新   SPRING_CONFIG_ROOT / applicationContext.xml已创建   SRC_MAIN_RESOURCES / META-INF / persistence.xml更新了ROOT / pom.xml   [添加依赖项org.hsqldb:hsqldb:1.8.0.10,   org.hibernate作为:休眠核心:3.6.9.Final,   org.hibernate作为:休眠-的EntityManager:3.6.9.Final,   org.hibernate.javax.persistence:休眠-JPA-2.0-API:1.0.1.Final,   org.hibernate作为:休眠-验证:4.2.0.Final,   javax.validation:validation-api:1.0.0.GA,cglib:cglib-nodep:2.2.2,   javax.transaction的:JTA:1.1,   org.springframework:弹簧的jdbc:$ {} spring.version,   org.springframework:弹簧ORM:$ {} spring.version,   commons-pool:commons-pool:1.5.6,commons-dbcp:commons-dbcp:1.3]

5-我创建了我的第一个实体

roo> entity jpa --class ~.domain.Message
  

创建SRC_MAIN_JAVA / com / hack / domain已创建   SRC_MAIN_JAVA / com / hack / domain / Message.java已创建   SRC_MAIN_JAVA / com / hack / domain / Message_Roo_Configurable.aj创建   SRC_MAIN_JAVA / com / hack / domain / Message_Roo_ToString.aj已创建   SRC_MAIN_JAVA / com / hack / domain / Message_Roo_Jpa_ActiveRecord.aj创建   SRC_MAIN_JAVA / COM /黑客/域/ Message_Roo_Jpa_Entity.aj

6-我将字段添加到实体

~.domain.Message roo> field number --fieldName votes --type java.lang.Integer --notNull
  

更新了SRC_MAIN_JAVA / com / hack / domain / Message.java已创建   SRC_MAIN_JAVA / COM /黑客/域/ Message_Roo_JavaBean.aj

7-将网络图层包含到我的项目中

~.domain.Message roo> web jsf setup --implementation APACHE_MYFACES --theme PEPPER_GRINDER
  

创建ROOT / src / main / webapp创建ROOT / src / main / webapp / index.html   创建了ROOT / src / main / webapp / viewExpired.xhtml创建   ROOT / src / main / webapp / resources / images创建   ROOT / src目录/主/ web应用/资源/图像/ csv.png
  创建了com.hack.jsf.converter.MessageConverter   ROOT / src / main / webapp / resources / images / de.png创建   ROOT / src / main / webapp / resources / images / en.png创建   ROOT / src / main / webapp / resources / images / es.png创建   ROOT / src / main / webapp / resources / images / excel.png创建   ROOT / src / main / webapp / resources / images / favicon.ico创建   ROOT / src / main / webapp / resources / images / pdf.png创建   ROOT / src / main / webapp / resources / images / roo_logo.png创建   ROOT / src / main / webapp / resources / images / springsource-logo.png创建   ROOT / src / main / webapp / resources / images / xml.png创建   ROOT / src / main / webapp / resources / css创建   ROOT / src / main / webapp / resources / css / standard.css创建   ROOT / src / main / webapp / resources / js已创建   ROOT / src / main / webapp / resources / js / calendar.js已创建   ROOT / src / main / webapp / templates已创建   ROOT / src / main / webapp / templates / content.xhtml创建   ROOT / src / main / webapp / templates / footer.xhtml创建   ROOT / src / main / webapp / templates / header.xhtml创建   ROOT / src / main / webapp / templates / layout.xhtml创建   ROOT / src / main / webapp / templates / menu.xhtml创建   ROOT / src / main / webapp / pages创建   ROOT / src / main / webapp / pages / main.xhtml更新了ROOT / pom.xml [已添加   依赖项org.apache.myfaces.core:myfaces-api:2.1.5,   org.apache.myfaces.core:MyFaces的-IMPL:2.1.5,   org.primefaces:primefaces:3.1,   org.primefaces.themes:南大街:1.0.3,   org.springframework:spring-web:$ {spring.version},javax.el:el-api:2.2,   公地文件上传:公地文件上传:1.2.2,   公共-10:公共-10:2.1;添加了存储库   http://repository.primefaces.org;增加依赖性   org.primefaces.themes:胡椒研磨机:1.0.3;将项目类型更新为   war]创建了SRC_MAIN_WEBAPP / WEB-INF   SRC_MAIN_WEBAPP / WEB-INF / web.xml中

8-我执行了一个包

~.domain.Message roo> web jsf all --package ~.jsf
  

创建ROOT / src / main / resources / com / hack / jsf / i18n已创建   ROOT / src目录/主/资源/ COM /黑客/ JSF /国际化/ messages_de.properties   创建   ROOT / src目录/主/资源/ COM /黑客/ JSF /国际化/ messages_en.properties   创建   ROOT / src目录/主/资源/ COM /黑客/ JSF /国际化/ messages_es.properties   创建SRC_MAIN_JAVA / com / hack / jsf已创建   SRC_MAIN_JAVA / com / hack / jsf / MessageBean.java已创建   SRC_MAIN_JAVA / com / hack / jsf / converter已创建   SRC_MAIN_JAVA / com / hack / jsf / converter / MessageConverter.java创建   SRC_MAIN_WEBAPP / WEB-INF / faces-config.xml已创建   SRC_MAIN_JAVA / com / hack / jsf / ApplicationBean.java已创建   SRC_MAIN_JAVA / com / hack / jsf / util已创建   SRC_MAIN_JAVA / com / hack / jsf / util / LocaleBean.java创建   SRC_MAIN_JAVA / COM /黑客/ JSF / UTIL / ViewExpiredExceptionExceptionHandlerFactory.java   创建   SRC_MAIN_JAVA / com / hack / jsf / util / ViewExpiredExceptionExceptionHandler.java创建SRC_MAIN_WEBAPP / pages / message.xhtml创建   SRC_MAIN_JAVA / COM /黑客/ JSF / ApplicationBean_Roo_ApplicationBean.aj   创建了SRC_MAIN_JAVA / com / hack / jsf / ApplicationBean_Roo_Configurable.aj   创建   SRC_MAIN_JAVA / COM /黑客/ JSF /转换器/ MessageConverter_Roo_Converter.aj   创建   SRC_MAIN_JAVA / com / hack / jsf / converter / MessageConverter_Roo_Configurable.aj创建了SRC_MAIN_JAVA / com / hack / jsf / MessageBean_Roo_Serializable.aj   创建了SRC_MAIN_JAVA / com / hack / jsf / MessageBean_Roo_Configurable.aj   创建了SRC_MAIN_JAVA / com / hack / jsf / MessageBean_Roo_ManagedBean.aj

9-退出了roo shell

~.jsf roo> quit

10-在linux终端上,我从项目内部运行了教程中建议的命令,在tomcat 7中执行

~/hackday/whatsup$ mvn package org.codehaus.cargo:cargo-maven2-plugin:run -Dcargo.maven.containerId=tomcat7x -Dcargo.maven.containerUrl=http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.22/bin/apache-tomcat-7.0.22.zip

这是尝试运行时的输出:

  

[INFO]扫描项目... [INFO]
  [信息]   -------------------------------------------------- ---------------------- [INFO]建筑物最高0.1.0.BUILD-SNAPSHOT [INFO]   -------------------------------------------------- ----------------------下载:   http://xxx.xx.xx.xx:8081/nexus/content/groups/public/org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.pom   下载:   http://maven.springframework.org/release/org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.pom   下载:   http://maven.springframework.org/milestone/org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.pom   下载:   http://spring-roo-repository.springsource.org/release/org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.pom   下载:   http://repository.primefaces.org/org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.pom   下载:   http://repository.primefaces.org/org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.pom   (636 B,3.3 KB /秒)下载:   http://xxx.xx.xx.xx:8081/nexus/content/groups/public/org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.jar   下载:   http://maven.springframework.org/release/org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.jar   下载:   http://maven.springframework.org/milestone/org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.jar   下载:   http://spring-roo-repository.springsource.org/release/org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.jar   下载:   http://repository.primefaces.org/org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.jar   下载:   http://repository.primefaces.org/org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.jar   (69 KB,155.3 KB /秒)[INFO] [INFO] ---   aspectj-maven-plugin:1.2:编译(默认)@whats-up --- [错误]   方法findAllMessages()未定义类型Message [ERROR]   类型不匹配:无法从消息转换为消息[错误]类型   mismatch:无法从Message转换为Message [ERROR]方法   getId()未定义类型String [ERROR]方法merge()是   未定义类型String [错误]方法persist()是   未定义的类型String [WARNING]建议中定义   org.springframework.orm.jpa.aspectj.JpaExceptionTranslatorAspect有   尚未应用[Xlint:adviceDidNotMatch] [警告]中定义的建议   org.springframework.mock.staticmock.AnnotationDrivenStaticEntityMockingControl   尚未应用[Xlint:adviceDidNotMatch] [警告]建议   定义于   org.springframework.mock.staticmock.AbstractMethodMockingControl有   尚未应用[Xlint:adviceDidNotMatch] [警告]中定义的建议   org.springframework.mock.staticmock.AbstractMethodMockingControl有   尚未应用[Xlint:adviceDidNotMatch] [警告]中定义的建议   org.springframework.scheduling.aspectj.AbstractAsyncExecutionAspect   尚未应用[Xlint:adviceDidNotMatch] [INFO]   -------------------------------------------------- ---------------------- [INFO] BUILD FAILURE [INFO]   -------------------------------------------------- ---------------------- [INFO]总时间:15.525s [INFO]完成时间:Mon Jan 07 17:56:26 GMT   2013 [INFO]最终记忆:6M / 125M [INFO]   -------------------------------------------------- ---------------------- [错误]无法执行目标   org.codehaus.mojo:aspectj-maven-plugin:1.2:编译(默认)on   project whats-up:编译器错误:allMessages =的[ERROR]错误   Message.findAllMessages(); [错误] ^^^^^^ [错误]   /home/cleanuser/hackday/whatsup/src/main/java/com/hack/jsf/MessageBean_Roo_ManagedBean.aj:72:0::0   方法findAllMessages()未定义类型Message [ERROR]   message = new Message(); [错误] [错误]   /home/cleanuser/hackday/whatsup/src/main/java/com/hack/jsf/MessageBean_Roo_ManagedBean.aj:198:0::0   类型不匹配:无法从消息转换为消息[错误]错误   message = new Message(); [错误] ^^^^ [错误]   /home/cleanuser/hackday/whatsup/src/main/java/com/hack/jsf/MessageBean_Roo_ManagedBean.aj:226:0::0   类型不匹配:无法从消息转换为消息[错误]错误   if(message.getId()!= null){[ERROR] [ERROR]   /home/cleanuser/hackday/whatsup/src/main/java/com/hack/jsf/MessageBean_Roo_ManagedBean.aj:233:0::0   对于类型为String [ERROR]错误,未定义方法getId()   message.merge(); [错误] [错误]   /home/cleanuser/hackday/whatsup/src/main/java/com/hack/jsf/MessageBean_Roo_ManagedBean.aj:234:0::0   对于类型为String [ERROR]错误,未定义方法merge()   message.persist(); [错误] [错误]   /home/cleanuser/hackday/whatsup/src/main/java/com/hack/jsf/MessageBean_Roo_ManagedBean.aj:237:0::0   方法persist()未定义类型String [ERROR] - > [救命   1] [ERROR] [ERROR]要查看错误的完整堆栈跟踪,请重新运行   使用-e开关的Maven。 [错误]使用-X开关重新运行Maven   启用完整调试日志记录[错误] [错误]有关的更多信息   错误和可能的解决方案,请阅读以下文章:   [错误] [帮助1]   http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

我不知道如何让它发挥作用。 正如您所看到的,我的步骤与DZone教程完全相同,我不知道有什么不同。 有趣的是,他们的榜样有效,但我的确如此。

我也没试过运气: mvn clean install 这将给我一个BUILD SUCCESS,但不能让它在服务器上运行 mvn tomcat:run  与其他命令

的结果相同

如果有人使用Spring RooJSF结合使用,我感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

看起来“Message”与自动生成的代码使用的某个名称冲突。你会尝试使用“MyMessage”吗?