分类 "编程开发" 的存档.
项目开发过程中,突然遇到这样一个错误,相关的提示消息如下:
no single default persistence unit defined in classpath meta-inf persistence.xml
之前项目一直是正常的,不知道什么原因在跑服务器的时候就抛出这个错误。
经过一番摸索,找到了解决方法:
首先在persistence.xml文件中查看persistence-unit的name属性值,比如abc,记下这个值
<persistence -unit name="abc">
</persistence> |
然后在src/main/resource下修改配置文件applicationContext-mysql.xml
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 增加下面一行 value设置为与persistence.xml文件中的相同 -->
<property name="persistenceUnitName" value="abc" />
</bean> |
前面写了一篇关于gwt中使用openflashchart的日志,不过没有详细描述如何使用ofcgwt,今天来补充一下。
本文使用gwt开发的项目使用maven进行管理,因此引入ofcgwt需在项目pom.xml文件中的标签中增加
<dependency>
<groupid>com.rednels</groupid>
<artifactid>ofcgwt</artifactid>
<version>2.0.1-beta</version>
<scope>provided</scope>
</dependency> |
在需要使用到open flash chart的模块配置文件中添加
<inherits name="com.rednels.ofcgwt.OFCGWT" /> |
这里有一点需要注意:
使用ofcgwt需要引用User模块,而且引用的顺序很关键,正确的应该保持这样的顺序
<inherits name="com.google.gwt.user.User" />
<inherits name="com.rednels.ofcgwt.OFCGWT" /> |
如果引用的顺序不正确或者缺少引用,在gwt编译的时候会报错
Loading inherited module 'com.rednels.ofcgwt.OFCGWT'
[ERROR] Property 'user.agent' not found
[ERROR] Failure while parsing XML
com.google.gwt.core.ext.UnableToCompleteException: (see previous log entries)
OpenFlashChart2是一个用flash显示数据图表的工具,许多的网页设计中都使用到了它。近来使用gwt开发网站,正好也有这方面的需求,最初的时候是通过JQuery直接使用json的方法来显示数据图表,后来发现了专门为gwt设计的ofcgwt,对openflashchart进行了java的封装,相比直接手工生成json数据要方便了许多。
具体的使用也是比较简单的,这里飞尘就不多介绍了,下面主要是解决使用中遇到的一个问题。
按照设计的要求,用户在未安装flash插件或者禁用flash插件时,网页能给出相应的提示,这一点openflashchart也为我们考虑到了,而且提供了一个方法可以自定义要显示的提示内容。飞尘这里遇到的问题可能比较特殊,由于openflashchart是作为一个widget在uibinder加载的,可能正是由于这种加载方式,使得openflashchart提供的setInnerDivTextForFlashPlayerNotFound方法在程序运行时没有得到执行,页面中始终显示的是默认的提示信息FlashPlayer ${flashPlayer.version} is required。
经过一番分析后,找到了解决方法,就是在uibinder中来设置setInnerDivTextForFlashPlayerNotFound
在uibinder中需引入ofcgwt:
<ui:uibinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui"
xmlns:o="urn:import:com.rednels.ofcgwt.client"></ui:uibinder> |
使用openflashchart:
<o:chartwidget ui:field="openFlashChart" width="200" height="200"
innerDivTextForFlashPlayerNotFound="some text" /> |
这里如果设置的提示内容非纯文本而是html代码,需要对< 和>进行转义
这里主要是在eclipse中使用maven,因此只使用到了一部分命令,整理下来方便以后查阅。
生成清除Eclipse项目结构:
mvn eclipse:eclipse
mvn eclipse:clean
清理(删除target目录下编译内容)
mvn clean
仅打包Web页面文件
mvn war:exploded
编译项目
mvn compile
打包发布
mvn package
打包时跳过测试
mvn package -Dmaven.test.skip=ture
还有很多命令目前还没有使用到,以后遇到再补充
使用eclipse进行开发时,在编译JAVA代码时的原则是:对于源代码目录中的所有*.java文件编译成同名的*.class文件,而对于如abc.java中的内部类C,编译成abc$C.class;对于所有非java后缀后的文件与目录,连同编译后的文件复制到目标位置。
这样就存在一个问题,如果代码是从svn库检出的,每个目录下都会有个.svn类型的目录,eclipse会把它们全都拷贝到编译目录(默认为bin),导致svn客户端会误认为bin目录是svn co出来的,而bin目录下的svn信息又与该目录下的文件内容不符,这样很多svn客户端就错乱了。更有甚者,会把bin目录下的内容check in到库中。
解决这个问题很简单,修改项目属性(选中工程->右键->properties),选择Java Build Path,在Sources选项卡中选择对应的源代码目录,选中Excluded,点击edit,在Exclusion pattems里填加 **/.svn/** 就可以了。这样eclipse在编译时会忽略掉.svn目录。
对于TortoiseSVN可能会设置使用_svn代替.svn目录,做相应设置即可。
更多关于TortoiseSVN的设置可参考官方提供的中文帮助文档。
http://tortoisesvn.net/docs/release/TortoiseSVN_zh_CN/index.html
在网页设计中经常遇到容器中放置文字的情况,且对文字的要求是仅单行显示,无论文字多少都不换行,例如下面的例子:
原始的样式
在这个div容器中有许许多多的文字,但是只会显示为一行,不会换行,多余的文字将被隐藏掉……
修改后的样式
在这个div容器中有许许多多的文字,但是只会显示为一行,不会换行,多余的文字将被隐藏掉……
其中最关键的属性就是:
white-space:nowrap
代码如下:
<div style="margin:5px 0 10px 0;overflow:hidden;width:200px;border:1px solid blue;white-space:nowrap;">
在这个div容器中有许许多多的文字,但是只会显示为一行,不会换行,多余的文字将被隐藏掉……
</div> |