如果使用Ant和Junit是被報找不到test
檢查一下是否誤用了private
出錯信息
<failure message=
No tests found in test
AllTest
type=
junit
framework
AssertionFailedError
>junit
framework
AssertionFailedError: No tests found in test
AllTest
該錯誤有個很特別的特點
當你不通過ant來運行測試
而是通過AllTest類來運行的話
可以正常運行
小心哦
如果遇到報
表名無效
且jvm報嚴重錯誤
看看是不是用了數據庫的保留關鍵字來做表名了
如User
使用ant時必須小心ant的classpath它用的不是IDE的classpath
小心!
小心下邊的異常
exception setting property value with CGLIB (set hibernate
cglib
use_reflection_optimizer=false for more info) setter of xp
bean
Users
?
type=
net
sf
hibernate
PropertyAccessException
>java
lang
ClassCastException at xp
bean
UsersMetaClass
setPropertyValues(<generated>) at net
sf
hibernate
persister
AbstractEntityPersister
setPropertyValues
上次出現該錯錯誤的原因是:
源文件裡我的class類型為一個類Contact contact
而跑到mapping裡卻成了Set
呵呵厲害
突然間冒出大量的NullPointException
重新build一下看看先
=
Flush during cascade is dangerous
this might occur if an object was deleted and then re
saved by cascade
Tapestry的出錯信息
Class com
bookshop
Hello does not implement the IPage interface
location: context:/WEB
INF/Home
page
line
原因
與顯示有關的哪個java類沒有從IPage家族繼承
使用ant時給出的路徑好象不允許出現空格
由於使用ant時用junit做測試的話
classpath中出現j
ee
jar的話
問題多多
例如xml格式的log文件生成不了
莫名其妙的NullPointException等
所以我設置了兩個包個包含j
ee
jar
為編譯用
一個沒有
為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的簡單報表解決方案
下載displaytag
jar和displaytag
tld
displaytag
jar放在lib目錄
而displaytag
tld放在WEB
INF目錄
在web
xml中為displaytag
tld聲明一下
<taglib>
<taglib
uri>;/taglib
uri>
<taglib
location>/WEB
INF/displaytag
tld</taglib
location>
</taglib>
在jsp裡使用前
加上
<%@ taglib uri=
prefix=
display
%>
注意該軟件有個bug
他要用的一個包common
lang
jar版本必須在
以上
如果碰到下面異常
則應堅持一下是否該包的版本問題
java
lang
NoSuchMethodError: mons
lang
StringUtils
capitalize(Ljava/lang/String;)Ljava/lang/String;
然後就可放心使用了
<display:column property =
xxx
/>其中xxx為對象中的帶有getter的變量>
定義表格的樣子
用css定義
如
s THEAD TR {
BACKGROUND
COLOR: #
c
}
s TR
even {
BACKGROUND
COLOR: #def
}
在使用分頁時
可能會出現這種情況
點擊其他頁時
彈出下載窗口
讓你下載當前jsp頁面
這是因為你在當前頁面讀取了數據的緣故
解決辦法為在action裡讀取數據而不是在jsp裡
可以參考
?d
p=
使用displaytag時
在一列中放入多個元素
必須在display:table中定義一個id
<display:table name =
allBooks
class =
its
pagesize =
id =
item
>
<display:column title =
操作
>
<a href =
/Bookshop/admin/bookManagement
do?action=view&id=<%=((Book)item)
getId()%>
target =
_blank
>查看</a>
<a href =
/Bookshop/admin/bookManagement
do?action=edit&id=<%=((Book)item)
getId()%>
>編輯</a>
<a href =
/Bookshop/admin/bookManagement
do?action=delete&id=<%=((Book)item)
getId()%>
>刪除</a>
</display:column>
要在displaytag中使用鏈接
必須具備paramId
否則不顯示為鏈接
<display:column property =
product
name
href =
viewDetailV
jsp
title =
書名
paramId=
item
paramProperty=
product
id
/>
可以這樣使用display
<display:column property =
product
id
title =
ID
/>
其中product為對象
<bean:write name =
xxxx
property =
xxx
/> 可以直接取到session
getAttribute()取到的東西
實驗struts
upload例子時要注意的地方
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:\b
jpg
上傳成功的話
會出現提示 The file has been written to
c:\b
jpg
Hibernate的like可以這麼用
Query query = session
createQuery(
from src
persistent
Book as book where upper(book
name) like :name
);
query
setString(
name
%
);
result = query
list();
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)
原因是struts
config的action =
x
寫成了 action =
x
do
在struts中
strut
config
xml中
forward時使用redirect =
true
可以將
do重定向為
jsp
以後在判斷相等性之前先用logger把兩個值顯示出來
從session裡getAttribute後
修改並不需要重新setAttribute一次
在hibernate中使用subclass是一棵繼承樹共用一個表
僅生成個mapping
每個類中必須有discrimator
value
在最上層的類中必須聲明
@hibernate
discriminator column =
class
不可以將子類添加到configuration裡去
(即不可addClass(子類))
使用Xdoclet的建立subclass的例子(該類是父類)
/**
* @hibernate
class discriminator
value =
customer
* @hibernate
discriminator column =
class
*/
而使用joined
subclass則是一類一表
也不許將子類添加進configuration裡去
/**
* @hibernate
joined
subclass
* @hibernate
joined
subclass
key
* column=
customer_id
*/
如果發現生成的mapping文件中joined
subclass的key column為空
那麼可能是@hibernate
joined
subclass
key這句沒有寫對
用joined
subclass生成的表
仔細看
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的one
to
one時
應該兩方向都set
否則會報save NullPointException
parent
setChild(child);
child
setParent(parent);
Hibernate
遇到下邊的異常
估計是與因為外鍵出現了問題
java
lang
NullPointerException
at net
sf
hibernate
persister
AbstractEntityPersister
getPropertyValue(AbstractEntityPersister
java:
)
at net
sf
hibernate
id
ForeignGenerator
generate(ForeignGenerator
java:
)
如:
* @hibernate
id generator
class =
foreign
* @hibernate
generator
param name =
property
value =
customer
* @hibernate
one
to
one name =
custmoer
class =
src
persistent
Customer
value的值和one
to
one 中name的值不符
則會出現上邊的異常
如果不顯示指定name則默認取成員變量名
如
Customer a
則name =
a
需要小心的是不是類名
所以
以後最好顯示指定名字為好
出現異常
Exceptionobject references an unsaved transient instance
save the transient instance before flushing: src
persistent
Product
原因沒有為某對象進行set設置
如上邊的這個就是某對象沒有調用setProduct
xxx action =
/a
不用
do和根目錄名
<a href =
b
do
需要
do和根目錄名
Caused by: java
sql
SQLException: ORA
: 違反完整約束條件 (BOOKSHOP
FK
AAEE
CCA
B)
未找到父項關鍵字
如果你覺得該做的e是出現這個問題
那麼檢查一下
是否將類的繼承關系在hibernate的mapping中反映了出來
joined
subclass或subclass
例如a extends b
如果持久類c 需要Set的是持久類a
那麼你把b傳入
而b又沒有在mapping中將父子關系反映出來的話
就會出現該異常
使用DynaActionForm需要注意的問題
在struts
config聲明
<form
bean name=
memberloginForm
dynamic =
true
type=
org
apache
struts
action
DynaActionForm
>
<form
property name =
name
type =
java
lang
String
/>
<form
property name =
password
type =
java
lang
String
/>
</form
bean>
在Action裡將form強制轉化成DynaActionForm
然後get(
屬性名
)就可以了
那位大俠能給出一個用hibernate進行分頁得實際例子
學習中!
?t=
Query q = s
find(
);
q
setFirstResult(
); // 從第
條記錄開始
q
setMaxResults(
); // 取出
條
struts的validate最簡單實現
首先准備好錯誤提示信息
xxx
properties 裡
errors
required={
} is required
(默認已有)
Form必須從ValidatorForm繼承
不可以重載ValidatorForm的validate函數
在validate
xml中為你想驗證的表單進行驗證設計
例如
<form name=
logonForm
>
<field property=
userName
depends=
required
>
<arg
key=
prompt
userName
/>
(該參數將在顯示錯誤信息是從xxx
properties讀取prompt
userName
填入{}方括號裡
取代
如果是arg
將將填入{
}位置
以此類推
</field>
</form>
不需要在action裡做任何處理
只管forward就行了
作為forward的目標頁
不需要任何有關用於處理出錯信息的處理
服務器報
The requested resource (/xxxx/) is not available
的很奇怪的一個的可能原因
在web
xml中定義的tld
沒有找到
或者是lib目錄下的包太多出現了問題
如
<taglib>
<taglib
uri>/spring</taglib
uri>
<taglib
location>/WEB
INF/spring
tld</taglib
location>
</taglib>
如WEB
INF目錄下不存在spring
tld的話
就會報上邊的錯誤
spring的xxx
servlet
xml的使用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 [java
lang
String] to required type [java
lang
Class] for property named
commandClass
; nested exception is:
java
lang
IllegalArgumentException: Invalid class name [PriceIncrease]: PriceIncrease]; errorCode=[typeMismatch]
java
lang
IllegalArgumentException: Invalid class name [PriceIncrease]: PriceIncrease
(
)<property name=
formView
><value>priceIncrease</value></property>
這一行必不可少
priceIncrease是頁面的名字
他將會是prefix + priceIncrease + suffix
如果缺少該行
則報
javax
servlet
ServletException: 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
org
springframework
validation
BindException
priceIncrease=org
springframework
validation
BindException: BindException:
errors}]]
使用Errors的rejectValue相關問題
rejectValue(java
lang
String field
java
lang
String errorCode
java
lang
Object[] errorArgs
java
lang
String defaultMessage)
Reject the given field of the current object
using the given error description
當前對象指的是xxx
servlet
xml中與validator類有聯系的哪個對象
第一個是
當前對象的屬性名
必須存在
第二個是
將要從屬性文件中讀取的消息
第三個是
傳遞給所讀取的消息的參數
如
error
too
low=You have to specify a percentage higher than {
}!
第四個是
當從屬性文件中讀取消息不成功時
所reject的值
以後從request中讀取parameter可以借用spring的RequestUtils包裡的
getStringParameter
public static java
lang
String getStringParameter(javax
servlet
http
HttpServletRequest request
&bsp; java
lang
String name
java
lang
String 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: net
sf
ehcache
hibernate
Provider
net
sf
hibernate
HibernateException: could not instantiate CacheProvider:
解決辦法
rc比以前的版本多需要一個包
ehcache
jar
static的問題
static函數只可以訪問static成員變量
而static變量可以被任何成員函數訪問
java
lang
NoClassDefFoundError: javax/transaction/Synchronization];
需要添加JTA
jar
From:http://tw.wingwit.com/Article/program/Java/hx/201311/11150.html