如果使用Ant和Junit是被报找不到test检查一下是否误用了private 出错信息 <failure message=No tests found in testAllTest type=junitframeworkAssertionFailedError>junitframeworkAssertionFailedError: No tests found in testAllTest 该错误有个很特别的特点当你不通过ant来运行测试而是通过AllTest类来运行的话可以正常运行小心哦 如果遇到报表名无效且jvm报严重错误看看是不是用了数据库的保留关键字来做表名了如User 使用ant时必须小心ant的classpath它用的不是IDE的classpath小心! 小心下边的异常 exception setting property value with CGLIB (set hibernatecglibuse_reflection_optimizer=false for more info) setter of xpbeanUsers? type=netsfhibernatePropertyAccessException>javalangClassCastException at xpbeanUsersMetaClasssetPropertyValues(<generated>) at netsfhibernatepersisterAbstractEntityPersistersetPropertyValues 上次出现该错错误的原因是: 源文件里我的class类型为一个类Contact contact 而跑到mapping里却成了Set呵呵厉害 突然间冒出大量的NullPointException 重新build一下看看先 =Flush during cascade is dangerous this might occur if an object was deleted and then resaved by cascade Tapestry的出错信息 Class combookshopHello does not implement the IPage interface location: context:/WEBINF/Homepage line 原因与显示有关的哪个java类没有从IPage家族继承 使用ant时给出的路径好象不允许出现空格 由于使用ant时用junit做测试的话classpath中出现jeejar的话问题多多例如xml格式的log文件生成不了莫名其妙的NullPointException等所以我设置了两个包个包含jeejar为编译用一个没有为junit用 进行单元测试时在查询返回后应马上assertNotNull()这样可以更快速的定位NullPointException 要使用ResourceBundle的话要千万小心必须用日志记录下它的状态还有该属性文件应该放在classes下面 当要显示任何页面时都被提示无效那么应该检查一下lib目录了还有一些很奇怪的异常例如你明明可以找到一个类但是服务器却提示ClassNotDefException那么估计是缺少了该类所必须的包了或者多了不兼容的包如 xdoclet系列包不被struts的lib目录所兼容 编写clone时从Java编程思想(nd)上学到的() 引数传递过程中会自动产生别名(alias) 没有局域对象(local objects)只有局域性的(local)references reference受范围(scope)的限制对象则否 对象的寿命从来不是Java的讨论议题(因为有垃圾回收机制) try catch finally的域居然是分离的 jsp乱码的其中一个原因charset=gb 等号=的两边不允许有空格 我的基于Displaytag的简单报表解决方案 下载displaytagjar和displaytagtld displaytagjar放在lib目录而displaytagtld放在WEBINF目录在webxml中为displaytagtld声明一下 <taglib> <tagliburi>;/tagliburi> <tagliblocation>/WEBINF/displaytagtld</tagliblocation> </taglib> 在jsp里使用前加上 <%@ taglib uri= prefix=display %> 注意该软件有个bug他要用的一个包commonlangjar版本必须在以上 如果碰到下面异常则应坚持一下是否该包的版本问题 javalangNoSuchMethodError: monslangStringUtilscapitalize(Ljava/lang/String;)Ljava/lang/String; 然后就可放心使用了 <display:column property = xxx/>其中xxx为对象中的带有getter的变量> 定义表格的样子用css定义如 s THEAD TR { BACKGROUNDCOLOR: #c } s TReven { BACKGROUNDCOLOR: #def } 在使用分页时可能会出现这种情况点击其他页时弹出下载窗口让你下载当前jsp页面这是因为你在当前页面读取了数据的缘故解决办法为在action里读取数据而不是在jsp里可以参考 ?dp= 使用displaytag时在一列中放入多个元素 必须在display:table中定义一个id <display:table name = allBooks class = its pagesize = id = item> <display:column title = 操作> <a href = /Bookshop/admin/bookManagementdo?action=view&id=<%=((Book)item)getId()%> target = _blank >查看</a> <a href = /Bookshop/admin/bookManagementdo?action=edit&id=<%=((Book)item)getId()%>>编辑</a> <a href = /Bookshop/admin/bookManagementdo?action=delete&id=<%=((Book)item)getId()%>>删除</a> </display:column> 要在displaytag中使用链接必须具备paramId否则不显示为链接 <display:column property = productname href = viewDetailVjsp title = 书名 paramId=item paramProperty=productid/> 可以这样使用display <display:column property = productid title = ID/> 其中product为对象 <bean:write name = xxxx property = xxx/> 可以直接取到sessiongetAttribute()取到的东西 实验strutsupload例子时要注意的地方 If you would rather write this file to another file please check here: 这一行要打钩 If you checked the box to write to a file please specify the file path here: 在这里要重命名如c:\bjpg 上传成功的话会出现提示 The file has been written to c:\bjpg Hibernate的like可以这么用 Query query = sessioncreateQuery(from srcpersistentBook as book where upper(bookname) like :name ); querysetString(name %); result = querylist(); Hibernate出现 duplicate import : className 异常也可能是因为忘了为持久类在configuration中addClass了 <logic:iterate id = author name = authors> name所引用的是session里的attribute 如果发现要出现询问下载的情况有可能是因为要跳转的页面出现了问题试试在要跳转到的页删掉 <%@ page contentType=text/html; charset=gb%> 如果JSP页面跳转时出现下边的错误信息 The request sent by the client was syntactically incorrect (Invalid path /web/shoppingCart was requested) 原因是strutsconfig的action = x 写成了 action = xdo 在struts中strutconfigxml中forward时使用redirect = true可以将do重定向为jsp 以后在判断相等性之前先用logger把两个值显示出来 从session里getAttribute后修改并不需要重新setAttribute一次 在hibernate中使用subclass是一棵继承树共用一个表仅生成个mapping 每个类中必须有discrimatorvalue在最上层的类中必须声明 @hibernatediscriminator column = class 不可以将子类添加到configuration里去(即不可addClass(子类)) 使用Xdoclet的建立subclass的例子(该类是父类) /** * @hibernateclass discriminatorvalue = customer * @hibernatediscriminator column = class */ 而使用joinedsubclass则是一类一表也不许将子类添加进configuration里去 /** * @hibernatejoinedsubclass * @hibernatejoinedsubclasskey * column=customer_id */ 如果发现生成的mapping文件中joinedsubclass的key column为空那么可能是@hibernatejoinedsubclasskey这句没有写对 用joinedsubclass生成的表仔细看Member extends Customer create table Customer ( id VARCHAR() not null name VARCHAR() description VARCHAR() primary key (id) ) create table Member ( customer_id VARCHAR() not null password VARCHAR() primary key (customer_id) ) 在junit中尽量使用assertEquals代替assertTrue; Hibernate 如果Child extends Parent 那么from Parent as parent 也将会将Child选出来而from Child as child 则不会选出Parent Hibernate 使用hibernate的onetoone时应该两方向都set否则会报save NullPointException parentsetChild(child); childsetParent(parent); Hibernate 遇到下边的异常估计是与因为外键出现了问题 javalangNullPointerException at netsfhibernatepersisterAbstractEntityPersistergetPropertyValue(AbstractEntityPersisterjava:) at netsfhibernateidForeignGeneratorgenerate(ForeignGeneratorjava:) 如: * @hibernateid generatorclass = foreign * @hibernategeneratorparam name = property value = customer * @hibernateonetoone name = custmoer class = srcpersistentCustomer value的值和onetoone 中name的值不符则会出现上边的异常如果不显示指定name则默认取成员变量名 如 Customer a 则name = a 需要小心的是不是类名所以以后最好显示指定名字为好 出现异常 Exceptionobject references an unsaved transient instance save the transient instance before flushing: srcpersistentProduct 原因没有为某对象进行set设置 如上边的这个就是某对象没有调用setProduct
xxx action = /a 不用do和根目录名 <a href = bdo 需要do和根目录名
Caused by: javasqlSQLException: ORA: 违反完整约束条件 (BOOKSHOPFKAAEE CCAB) 未找到父项关键字 如果你觉得该做的e是出现这个问题那么检查一下是否将类的继承关系在hibernate的mapping中反映了出来joinedsubclass或subclass 例如a extends b 如果持久类c 需要Set的是持久类a那么你把b传入而b又没有在mapping中将父子关系反映出来的话就会出现该异常 使用DynaActionForm需要注意的问题 在strutsconfig声明 <formbean name=memberloginForm dynamic =true type=orgapachestrutsactionDynaActionForm> <formproperty name = name type = javalangString/> <formproperty name = password type = javalangString/> </formbean> 在Action里将form强制转化成DynaActionForm然后get(属性名)就可以了 那位大侠能给出一个用hibernate进行分页得实际例子学习中! ?t= Query q = sfind(); qsetFirstResult(); // 从第条记录开始 qsetMaxResults(); // 取出条
struts的validate最简单实现 首先准备好错误提示信息 xxxproperties 里 errorsrequired={} is required(默认已有) Form必须从ValidatorForm继承 不可以重载ValidatorForm的validate函数 在validatexml中为你想验证的表单进行验证设计例如 <form name=logonForm> <field property=userName depends=required> <arg key=promptuserName/> (该参数将在显示错误信息是从xxxproperties读取promptuserName填入{}方括号里取代如果是arg将将填入{}位置以此类推 </field> </form> 不需要在action里做任何处理只管forward就行了作为forward的目标页不需要任何有关用于处理出错信息的处理 服务器报 The requested resource (/xxxx/) is not available的很奇怪的一个的可能原因 在webxml中定义的tld没有找到 或者是lib目录下的包太多出现了问题 如 <taglib> <tagliburi>/spring</tagliburi> <tagliblocation>/WEBINF/springtld</tagliblocation> </taglib> 如WEBINF目录下不存在springtld的话就会报上边的错误
spring的xxxservletxml的使用SimpleFormController系列的类问题 <bean id = priceIncreaseForm class=PriceIncreaseFormController> <property name=sessionForm><value>true</value></property> <property name=beanName><value>priceIncrease</value></property> <property name=commandClass><value>PriceIncrease</value></property> <property name=formView><value>priceIncrease</value></property> <property name=successView><value>hello</value></property> <property name=productManager> <ref bean=prodMan/> </property> </bean> 这里要注意几个问题 ()上边的PriceIncrease是了类名必须在classes里存在该类否则报 PropertyVetoExceptionsException: errors: ErrorCodedPropertyVetoException: message=[Failed to convert property value of type [javalangString] to required type [javalangClass] for property named commandClass; nested exception is: javalangIllegalArgumentException: Invalid class name [PriceIncrease]: PriceIncrease]; errorCode=[typeMismatch] javalangIllegalArgumentException: Invalid class name [PriceIncrease]: PriceIncrease ()<property name=formView><value>priceIncrease</value></property> 这一行必不可少priceIncrease是页面的名字他将会是prefix + priceIncrease + suffix 如果缺少该行则报 javaxservletServletException: Error in ModelAndView object or View resolution encountered by servlet with name pocketSpring: View to render cannot be null with ModelAndView [ModelAndView: materialized View is [null]; Model=[{priceIncrease=PriceIncrease@e orgspringframeworkvalidationBindExceptionpriceIncrease=orgspringframeworkvalidationBindException: BindException: errors}]] 使用Errors的rejectValue相关问题 rejectValue(javalangString field javalangString errorCode javalangObject[] errorArgs javalangString defaultMessage) Reject the given field of the current object using the given error description 当前对象指的是xxxservletxml中与validator类有联系的哪个对象 第一个是当前对象的属性名必须存在 第二个是将要从属性文件中读取的消息 第三个是传递给所读取的消息的参数如 errortoolow=You have to specify a percentage higher than {}! 第四个是当从属性文件中读取消息不成功时所reject的值 以后从request中读取parameter可以借用spring的RequestUtils包里的 getStringParameter public static javalangString getStringParameter(javaxservlethttpHttpServletRequest request &bsp; javalangString name javalangString defaultVal) Get a string parameter with a fallback value Never throws an exception Can pass a distinguished value to default to enable checks of whether it was supplied 不会抛异常 Hibernate的问题rc的问题 INFO: cache provider: netsfehcachehibernateProvider netsfhibernateHibernateException: could not instantiate CacheProvider: 解决办法rc比以前的版本多需要一个包 ehcachejar static的问题 static函数只可以访问static成员变量 而static变量可以被任何成员函数访问
javalangNoClassDefFoundError: javax/transaction/Synchronization]; 需要添加JTAjar |