1,用戶驗證的Tag應放在mainLayout里邊,首頁的jsp應該單做,因此放了兩個layout.
2,javax.servlet.ServletException: Cannot retrieve definition for form bean null on action queryxy.do
只定義了action,沒有定義form,struts要求嚴格對應,有action,就要有form,可以不采用html:form標簽,而使用傳統的<form>,這樣在struts-config.xml中就只要path和attribute就行了。
3,
ERROR 2006-03-11 16:49:39 [http-8080-Processor24] (InsertTag.java:922)
- ServletException in '/root/xyxxwh.jsp': Cannot find bean under name
org.apache.struts.taglib.html.BEAN
這可能是一個初學者非常非常常見的異常,讓人很不爽,我和sk都碰到了這樣的問題,索性不用標簽,直接用1中的方法。不過這個問題還是要找時間請教一下高手都是如何處理的。
3,rs無論查沒有查到數據,rs.next()都存在,只是rs.getString(1)以后得到的是一個NULL。查詢以后rs是不會為null的。
4,<action path="/Xyxxwh" attribute="XyxxwhForm" scope="request" name="XyxxwhForm"
?????? ? type="com.kingdom.jxjy.struts.action.WhxyxxAction" >
???????? <forward name="success" path="/queryxy.do" />
???????? <forward name="failure" path="error" />
????? </action>
??
這段配置,我打算在success時跳轉到queryxy.do去執行查詢,可以是無論怎么設置都不行,包括"/queryxy.do",
"/queryxy","queryxy.do","queryxy".問了莫莫高手,也沒有很好的解決,因為人家通常就是跳轉到一個jsp,根本不像我
用的這么麻煩,還用模板。后來,return new
ActionForward("queryxy.do?type=rym&rym="+rym,true);才解決了問題。需要說明的是沒有
true的時候就不行,剛開始還不知道怎么回事兒,后來看了struts的API
conference,才知道原來是指定為redirect方式跳轉,而不是relative。不過這兩種方式有什么區別以后,還得找時間學習學習。
5,tile模板給我帶來的問題:
a,對于每一個struts跳轉要在tile-config.xml寫一項,否則就無法跳轉到jsp頁面,因為body頁面都是不完整的。
b,對于可以直接訪問的jsp光在tile-config里邊寫還不行,還必須要在struts-config。xml里邊寫才好使。
雖然說結構聽清晰,但是麻煩也不少。
6,
程序里邊為了做成下拉菜單,用了這么一句話<script language="javascript"
src="<%=cxp%>/js/mz.js"></script>,發現怎么也出不來菜單。開始以為是因為放在
body里邊后失效的原因,因為看到的例子都是放在<head>里邊的。后來放在<head>里邊也不行,那就是別的原因。不斷
的嘗試,后來居然還用firefox幫忙,發現在firefox里邊能出來下拉菜單,但是菜單上的文字是亂碼。于是立刻想到,js文件會不會像txt那樣
有默認的編碼,于是另存為utf-8格式,果然通了。事實上把js文件按照unicode或者utf-8存儲就都可以弄出來了。因為以前的js文件都是用
在gbk編碼的jsp里邊,系統過濾器設置的也是gbk,所以不會出問題,而我現在統一成utf-8,就出了問題,看來這也得注意。