標簽庫:
???? a) struts框架下的struts標簽庫
???? b) sun jstl c標簽庫
???
??? 作用: 1) jsp 和 java代碼分離 -- 自定義標簽
????????????? 用標簽來替代Java的代碼
????????? 2) struts標簽 能夠和struts-config.xml
????????????? actionForm等特有的對象進行交互
struts標簽庫
?? html標簽 --- 替代基本的html元素
?? bean標簽 --- 訪問JavaBean
?? logic標簽 --- for
???????????????? if判斷? 程序結構的標簽化
html標簽
?1.html標簽
? <% taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
? 基本html標記的替代標簽
a)基本的html元素標簽 (選擇使用)
?<html:html> *****?????
????? <html:html locale="true"> 對應 <html lang="zh-CN">
?<html:base> *****????
????? <html:base/>? 對應 <base href="http://localhost:8080/aa.jsp">
?????????????????????????????????????? 當前頁面的地址
?<html:img> *******
???? <html:img page="images/zhangying.gif"/>
????????? 對應
???? <img src="images/zhangying.gif">
??? 傳參數
??? <html:img page="jspimage.jsp" paramId="id" paramName="1"/>
????? 對應
??? <img src="jspimage.jsp?id=1"/>????????
?
**** <html:link> 3個屬性page href forward
?? 代替Html中超鏈接標記
??????? <a href="sueccess.jsp">跳轉</a>??
????
???? <html:link page="logout.jsp"> 相對路徑page
??????? 注銷
???? </html:link>
??????? 對應
????? <a href="logout.jsp">注銷</a>
???? <html:link href="http://www.sohu.com"> 絕對路徑href
???????? sohu網站
???? </html:link>
?????? 對應
???? <a href="http://www.sohu.com">sohu網站</a>
?struts-config.xml中的global-forwards
??? forward
???? <html:link forward="success">? 對應全局轉發
?????????? 成功頁面
???? </html:link>?
?????? 對應
???? <a href="/success.jsp">成功頁面</a>
?傳參數:
?? paramId 指定傳參數的名字 id
?? paramName 指定參數的值 1
??? <html:link page="/deleteemp.do" paramId="id" paramName="1">
????? 刪除
??? </html:link>
??? 對應
??? <a href="/deleteemp.do?id=1">刪除</a>
<html:rewrite>? 輸出對應的URI 的字符串
??????????????????? 不產生超鏈接?
?<html:rewrite page="/deleteemp.do" paramId="id" paramName="1">
??? 對應
??? /deleteemp.do?id=1
b)基本表單標簽 ->form表單? ******
? <html:form>
? <html:text>
? <html:hidden>
? <html:reset>
? <html:submit>
? <html:password>
? <html:checkbox>
? <html:radio>
? <html:file>? ----- 文件類型
? <html:select>
? <html:option>
????? 對應基本的表單元素? property="" value=""
?? <input type="text" name="user" value="">
對應于
? <html:text property="user" value=""/>
<input type="checkbox" name="ah" value="1">體育
<input type="checkbox" name="ah" value="2">游泳
對應于
<html:checkbox property="ah" value="1">體育</html:checkbox>
<html:checkbox property="ah" value="2">游泳</html:checkbox>
? <html:file> ---文件的上傳的標簽
??? common-fileupload-1.0.jar
?? 實現文件的上傳
?? actionForm中? FormFile的類型 代表file文件
?用處: <html:file/>? 文件上傳得
??????? <html:link/>? 頁面跳轉的
c)錯誤和正確信息標簽??? *******
? jdk的bin中 native2ascii.exe
???? 編碼方式變為Unicode方式
? native2ascii -encoding gb2312 applicationResources.properties
ApplicationResources_zh_CN.properties
? <html:errors/>
??? 輸出所有actionError的內容
? <html:errors property="uname"/>
??? 輸出key=uname對應的內容
?
2.bean標簽?? 訪問變量的屬性或輸出值
???????????? 訪問JavaBean
? a)訪問http請求信息和jsp隱式對象
**???? <bean:cookie> cookie訪問
?????? <bean:cookie id="mycookie" name="loginname" value="123"/>
?????????? id -- 自己設置Cookie變量的名字
?????????? name -- Cookie對象的名字
?????????? value -- 默認值
?
???????? <bean:write name="mycookie" property="value"/>
????????? 取出值
???????? <bean:write name="mycookie" property="name"/>
????????? 取出名字
?
? Cookie c = new Cookie("loginname","northwind");????????
???? c.getValue()
???? c.getName()
?????????
***???? <bean:parameter>訪問請求的參數request
????? <bean:parameter id="arg1" name="username" value="north"/>
?????????? <bean:write name="arg1"/>
????? 對應的Java代碼
??????? request.getParameter("username");
****? <bean:page> 訪問jsp的隱式對象---屬性
????? session
???????? getId() -> id
???????? getCreationTime()? -> creationTime
????? application
????? request
????? response
? 所有對象的get方法能訪問到的屬性 都可以被這個標簽訪問
??? 屬性的第一個字母變成小寫后都可以訪問
?????? <bean:page id="this_session" property="session"/>
????? <bean:write name="this_session" property="creationTime"/>
???????????
?? b)訪問資源
***????? <bean:message> 訪問applicationResources中的消息
???????? <bean:message key="hello.user"/> 輸出key的值
????? <bean:include> 包含資源到一個變量中
? 動作 <jsp:include page="testpage1.jsp"/>
????? 頁面運行結果包含進來
???
? 等價于下面2句話
???????? <bean:include id="tp1" page="/testpage1.jsp"/>
???????? <bean:write name="tp1"/> 輸出變量的內容
????????????????????????????????? 輸出的是頁面的內容?
?? c) 定義和輸出JavaBean
?*****? <bean:define> 定義一個變量
???????? <bean:define id="aa" value="Hello"/>
??????????? <bean:write name="aa"/>? -> Hello
???????? <bean:define id="bb" name="empbean" property="ename"/>
? JavaBean:empbean
? 屬性ename
?? 變量? String bb = empbean.getEname();
?????????? <bean:write name="bb"/> 得到empbean中屬性ename的值
?***???? <bean:write> 顯示JavaBean及其屬性或變量的內容
???????? <bean:write name="" property="" scope=""/>
????????????? name=某個范圍中的屬性的名字 (對象)
????????????? property=JavaBean中的屬性
????????????? scope=訪問對象的范圍
??????
3.logic標簽
?a)if else
??????? if a=b then 等于
??????????????????? 不等于
??????????????????? 大于
??????????????????? 小于
?字符串
??????????????????? 匹配
??????????????????? 不匹配
??????????????????? 空值
??????????????????? 非空值
?b)循環
????? for(int i=0;i<vect.size();i++){
????? }????????????????
???? 對集合的遍歷如何做??
a)
?存在性
? <logic:present/> 是否存在某種變量
????? cookie="cookie名字"
????? header="request中的header"
????? parameter="參數"
?????
????? name="變量或JavaBean" property=""
????? scope="request/session/application"
??? 如果存在 就輸出標簽體的內容
? 相反的標簽
? <logic:notpresent/>
?
?是否為空
?? 空 - ""或null
?? <logic:empty name="變量或JavaBean" property="">
?? </logic:empty>
?是否相等
?? <logic:equal/>
?大于? >? <logic:greaterThan/>
????? >=? <logic:greaterEqual/>
?小于? <? <logic:lessThan/>
?????? <= <logic:lessEqual/>
?
?匹配?
?? <logic:match/>
?? <logic:nomatch/>?
???? location 表示的是位置
??????? 從開始匹配 start
??????? 從結束匹配 end
循環
??? <logic:iterate>
?????? <%
????????? Vector v = new Vector();
????????? v.add("1");
????????? v.add("2");
????????? v.add("3");
????????? v.add("4");
????????? request.setAttribute("number",v);
?????? %>?
?? id定義一個變量
?? name定義變量的內容
??????
?????? <logic:iterate id="ele" name="number">
?????????? <bean:write name="ele"/>
??????? </logic:iterate>
?對集合中所有元素的循環訪問
?indexId 定義循環計數器變量 i
?offset? 開始元素的位置
?length? 要輸出元素的個數
??????? <logic:iterate id="ele" indexId="index" name="number" offset="1" length="2">
?????????? <bean:write name="index"/>.<bean:write name="ele"/><br>
???????? </logic:iterate>
? c) logic轉發和重定向
??? <logic:forward name="index"/> 對應global-forwards
?????????? 轉發到index
? <jsp:forward page="index"/>
???? <logic:redirect page="aa.jsp"/>
?????????? 重定向到aa.jsp
???? response.sendRedirect("aa.jsp")?????
????
struts中文亂碼問題的解決
?<1>編碼轉換函數
?<2>過濾器
Action和jsp的開發其實就是對Struts標簽的運用.掌握標簽的熟練程度決定了開發效率.初學者往往對某個數據表示或數據獲取,束手無策.一個簡單的問題浪費一兩天時間也就不足為怪了.導致整個開發進度延后.外面的struts書籍介紹標簽和數據傳輸原理都比較簡單,下面我對標簽技術和數據傳輸原理,進行全方位多角度的剖析.希望對各位有所幫助.以此為模版,將大大提高開發效率.以sample為機能名稱.
D(j Jtw/c&J①畫面上有一text框,顯現內容為某一數據表中的某一字段.那我們該如何設置和得到此數據呢?JAVA中文站社區門戶D0FYJF
SampleJsp:JAVA中文站社區門戶U!QS2U&s0E0hVT]3]
? < html:text name = "sampleForm" property="name" />
{D%],L&N c)K1Y oSampleForm.java: // form文件名必須和jsp中標簽的name對應JAVA中文站社區門戶j+b&YB-k6gn.},m!NX
? String name; // 必須和jsp中該項目的property一樣
'hu tXL4qs Z? public String getName() { return name; }
+Mg*i9[p4lj z"L/L$d? public void setName(String name) { this.name = name;}
{;b L;ZY3_E)WY變量和方法名,不可以順意.變量abcd,那方法名就是setAbcd和getAbcd.注意大小寫.JAVA中文站社區門戶Ue TEd
jsp中的項目必然全部在form里面有所表示,當然反過來,form里的項目在jsp中不一定全部表示(可能有輔助動作的對象或驗證)JAVA中文站社區門戶 zGr,kJ
SampleAction.java JAVA中文站社區門戶d%Sx"ph N8xg0B0W
? public ActionForward start(ActionMapping mapping,
S9x @.}6^#vW? ActionForm argForm, HttpServletRequest req, HttpServletResponse res)JAVA中文站社區門戶.M']ftn:Qn0v:Z:?
? throws Exception {JAVA中文站社區門戶&kPF5f)R$K_M&p
??????? SampleForm form = (SampleForm) argForm;JAVA中文站社區門戶 VS| }2u x9P z5F
??????? String name = ………………other codes for get name from dbJAVA中文站社區門戶N1X8?-M0@B)BF
??????? // set name
3@F+{-S/C-~}??????? form.setName(name);JAVA中文站社區門戶$l(l(K/Z7?9c\5D%Um
??????? // now text will show the name
Uop3fz0zqof? }JAVA中文站社區門戶As a1I7r)u,y;a%H
public ActionForward save(ActionMapping mapping,JAVA中文站社區門戶f X?&m7H4i%n
? ActionForm argForm, HttpServletRequest req, HttpServletResponse res)
#{ SEv+Zhq??????? throws Exception {JAVA中文站社區門戶 AQ O rH*L
??????? SampleForm form = (SampleForm) argForm;
;d2P8rvl1f2`Z2g;c??????? // get nameJAVA中文站社區門戶YB#L,~*?sW Y
??????? String name = form.getName();
S c2G c,DB u$j Po%mf??????? ………………other codes for save nameJAVA中文站社區門戶+JyI7EN'P\%x
? }JAVA中文站社區門戶8W9NSD'j
jsp和form對應,action操作form,form其實起了傳輸數據的作用.這就是struts標簽的核心原理.得到數據和設置數據沒問題了,剩下的工作也就得心應手了. JAVA中文站社區門戶E@+h'U5J xt
②再看一個處理標簽的方法.畫面上是一個明細一覽表示(表).表示的是數據表user的相關數據(id,name).
$~dJBY `AZSampleJsp:
R$k)?Hy/L? < logic:present name="sampleForm" property="userList" >JAVA中文站社區門戶'fz9A/O d
??? < logic:iterate id="user" name=" sampleForm " property="userList">JAVA中文站社區門戶%kl@5K,d$e B[~)^
????? < tr>
2h t { X:|3UF*Y??????? < td>< bean:write name="user" property="id" />< /td>JAVA中文站社區門戶Y k8k8A Z)} b0cz
??????? < td>< bean:write name="user" property="name" />< /td>JAVA中文站社區門戶6w G6|bM
????? < /tr>JAVA中文站社區門戶F4l N!O8RY DVL
??? < /logic:iterate>
j}K%FqP:[FH? < /logic:present>
C@ U`9l.np"Y:m JAVA中文站社區門戶;REv(zGUpS#JF,o}
logic:present是邏輯判斷,sampleForm中userList為空(無數據或null),下面的東東不顯示.JAVA中文站社區門戶b"V1M@%~Nf
logic:iterate是邏輯循環,userList有幾條數據,就循環幾次.
P^`a;FUM!o
:u6Ki#BvTf< bean:write name="user" property="id" />是lable標簽,顯示user這個對象(entity)的id屬性.或者說顯示數據表user中的一條記錄中的id這個列.JAVA中文站社區門戶7[3QE CC8Jx(l^
User.java(就是entity,因為和業務密切,高達不開發,切記切記不可順意修改.遇到設計有問題,QA日本)JAVA中文站社區門戶!ziw i H%{3M!~g
??? String id;JAVA中文站社區門戶-M:L"N2Q'|3u^ L
??? public String getId() { return id; }JAVA中文站社區門戶+e*Aa| \"p9{
??? public void setId(String id) { this.id = id; }
qvf3OI??? String name;JAVA中文站社區門戶Qk'CT)P!j
??? public String getName () { return name; }JAVA中文站社區門戶i _ o'^ h+}z
??? public void setName (String name) { this.name = name; }
9DC w*v f(?看到這,是否覺得面熟啊,好象和FORM一樣,但有點不一樣,不一樣在哪里,看下去后,自己感悟吧.JAVA中文站社區門戶Y4v ZYg
SampleForm.java: JAVA中文站社區門戶E y)B?x X
??? List userList;JAVA中文站社區門戶U e#ft'y(B3M
??? public List getUserList () { return userList; }
9BMO aS&B`??? public void setUserList (List userList) { this.userList = userList; }
Ou.I Ve[Z)fform只要這些,那你會問,id和name,struts如何能得到呢?你不是說過jsp必須和form一樣對應嗎?不錯,一一對應是肯定的. UserList信息已經包含了一切,還需要定義id和name嗎?至于struts如何得到數據,那就看下面的action是如何處理的吧.JAVA中文站社區門戶6_a.o)x b"q8z"x)h
SampleAction.java
7Ab^"t)N/xl-Tpublic ActionForward start(ActionMapping mapping,JAVA中文站社區門戶u^+H{|
? ActionForm argForm, HttpServletRequest req, HttpServletResponse res)JAVA中文站社區門戶z/\+Y7[&I }
??????? throws Exception {JAVA中文站社區門戶3w"Ty z4Rpr"F
??????? SampleForm form = (SampleForm) argForm;
z`7~ F oS*j o%O??????? ArrayList userList = new ArrayList();
MdzP;P&SfZMG??????? User user = new User();
P U`p"iN`c7^p$I??????? user.setId(1);JAVA中文站社區門戶7u[t,_~ QO2z
??????? user.setName(“name1”);
p6G5drI,}y??????? userList.add(user);JAVA中文站社區門戶Z(J:ww7U
JAVA中文站社區門戶a ENe~{
??????? User user = new User();
Kq2k5yQ9w!D7YS|??????? user.setId(2);JAVA中文站社區門戶#H/Dja|
??????? user.setName(“name2”);
P%F%w Cz`NV X??????? userList.add(user);JAVA中文站社區門戶8T\J'|%f%C
??????? JAVA中文站社區門戶`0r5O-kfs`t
??????? // set userListJAVA中文站社區門戶8`Ip Q"};No]k
??????? form.setUserList(userList);
btlJ;zUf??????? // now table will showJAVA中文站社區門戶5~!w#M t{`#[-i
? }
e1olp'r!Z一切搞定.是不是很簡單,但估計你還是有點暈.你還是想問我,id和name到底是如何設置的?
6Dp!SX#E(e0MtguAction設置了userList就夠了,它包含夠多的信息了. struts看見了你設置了userList.它就知道了這個list里面都user(entity),useruser(entity)里面不是有很多get,set方法嗎?JAVA中文站社區門戶 g'|"K*`2d M
9] `.lIb3{8S再看下下面的東東.
!aJDU3Vpa-P< logic:iterate id="user" name=" sampleForm " property="userList">
8e)L!jGU;gO n6a< bean:write name="user" property="id" />
5xNl.TZJ*Kid=”user”,和name="user" 對應了,明白啥意思嗎?.就象循環指明索引一樣. property="id"就是要顯示的這個索引對應的內容.Struts就是這樣來認id和name的.
v+x3iZ'T!k2t*o~4T JAVA中文站社區門戶a7u,x4B_}0C R
③接下來,看一個加強版的table例子,在顯示的明細一覽,每一行前面加一個radio框,讓用戶選擇哪個user.進行刪除操作.
eW.L_$@s hi@SampleJsp:
-iO"ae^ Z? < logic:present name="sampleForm" property="userList" >
jQ Rv#f? < logic:iterate id="user" name=" sampleForm " property="userList">
2m;R;x8mN'D&i:O@? < tr>JAVA中文站社區門戶so4V[)U1ku
??? < td>JAVA中文站社區門戶(\ J)]-T I]$gu-H.]#i
? < html:radio name="sampleForm" property="selectedUserId" value="< %=((jp.co.mhcb.obs.persis.entity.User)pageContext.getAttribute("user ")).getId().toString() %>" />JAVA中文站社區門戶)EY dmM aC
?? < /td>JAVA中文站社區門戶(z#T5?.c4kTn ~7}
?? < td>< bean:write name="user" property="id" />< /td>JAVA中文站社區門戶h[mxV(D4f
?? < td>< bean:write name="user" property="name" />< /td>
?9ZF1g4\ K'PA? < /tr>
?+h"F#x e*wdj)F< /logic:iterate> JAVA中文站社區門戶\[M;B3x"_m
< /logic:present>JAVA中文站社區門戶8Y A c/[Sb
e!d\/^JsampleForm.java:JAVA中文站社區門戶 dmP:[(qU*|H(? U
??? String selectedUserId; JAVA中文站社區門戶Z%i| i!F;E+p7gCq
??? public String getSelectedUserId () { return selectedUserId; }
0J1J ]qb1r ?y??? public void setSelectedUserId(String selectedUserId) {JAVA中文站社區門戶H%\C)M-t9[@#J+y
??????? this.selectedUserId = selectedUserId;JAVA中文站社區門戶(bAP)K4C8F)M
??? }JAVA中文站社區門戶6D Q,F V)O*aXAv
SampleAction.java JAVA中文站社區門戶)ytt)ETx
public ActionForward delete(ActionMapping mapping,
?*ZfUP!z? ActionForm argForm, HttpServletRequest req, HttpServletResponse res)
4[}K#R6k&J^wKC??????? throws Exception {
A8u`(d,y u/B-O??????? SampleForm form = (SampleForm) argForm;
cj}o!Q4MM!_0_??????? String selectedUserId = form.getSelectedUserId();
]4N%v"SV%GE??????? // get user by selected idJAVA中文站社區門戶9H-\j{vQ
??????? User user = getUser(selectedUserId);JAVA中文站社區門戶z;U}&a)](H
??????? // delete user
e,M$t$k2xf5U??????? }
$]cV4SiP1L!wradio框. propertys值對應form里的對象.value值是該行radio對應的user中的id(數據表中user的id是主鍵),那么當用戶選中任何一個radio,struts通過form得到propertys值,就可以得到選中哪個user了,然后進行相應操作.JAVA中文站社區門戶e%`N$` lb CM
設置哪個user被選中,一是通過用戶選擇,沒的說.二,通過程序控制,如果進入初期畫面,我要讓user.id = ‘3’的radio被選中,只要在初期Action中form.selectedUserId(“3”);一切搞定,就一句話,進入初期畫面時, user.id = ‘3’的radio被選中了.JAVA中文站社區門戶1Sj*w*fqj
o/J0{g$nY,{v@注意以下標簽JAVA中文站社區門戶2c7HFGa:JR`#j3s
< html:radio name="sampleForm" property="selectedUserId" value="< %= ((jp.co.mhcb.obs.persis.entity.User)pageContext.getAttribute("user ")).getId().toString() %>" />JAVA中文站社區門戶z"YH9^rqu
下面發揮想象一下以下標簽啥意思?JAVA中文站社區門戶^9w8Y]6t n~5Y T
< html:radio name="sampleForm" property="selectedUserId" value="< %= ((jp.co.mhcb.obs.persis.entity.User)pageContext.getAttribute("user ")).getObject1().getObject1().getObject2()…………getObjectN().getId().toString() %>" />JAVA中文站社區門戶3Nj] c0_k+TE$\!R1_)_
能看出來什么?JAVA中文站社區門戶^9~E*V*R7|
User包含object1,object2包含object3,….objectN-1包含objectN,objectN有id屬性.JAVA中文站社區門戶|6D8`g ypB
看出來了嗎?靈活運用,想象一下,各個entity和form,action該如何寫?
(il,eu2zL
qoG_ I&k④接著介紹一下,checkbox是使用.畫面有一排checkbox,如何設置和得到數據呢?先看一個簡單點的. JAVA中文站社區門戶7h5H4deQb
?< html:checkbox name=" sampleForm" property="chechbox1" value="true" />
.}YP1_(\;[?< html:checkbox name=" sampleForm" property="chechbox2" value="false" />JAVA中文站社區門戶*o Q \&u9K1@Vn
?< html:checkbox name=" sampleForm" property="chechbox3" value="true" />JAVA中文站社區門戶CO ^ X(Nyz&Z
第二個框未選中,其他選中.form里面對應三個String chechbox1,chechbox2, chechbox3;下面來個復雜點的,多選擇對話框multiboxJAVA中文站社區門戶-r\6H4~ CXL*c['j
SampleJsp中:
]n"lTS*^r,V< logic:iterate name = "sampleForm" id="user" property="userList">
2f E5RWPB i? < html:multibox property="selectedUsers">
T4y&Zr7ux(Q??? < bean:write name="user" property="id"/>
h\h[-X lMF Q? < /html:multibox>JAVA中文站社區門戶-r-ir MV/^4@"Ot
? < bean:write name="user" property="name"/> JAVA中文站社區門戶&f RnHiC0e*Z*CZ
< /logic:iterate>JAVA中文站社區門戶ds T)zS)Huwe^
8h%g6Gd+t^I`SampleForm中:
T0R T}E8~??? private String userList[] = new String[0];
a Aah!KP9A??? public String[] getUserList () { return userList;}
L.CDQv&Dw.QX L??? public void setUserList(String[]userList) {this.userList = userList;}
]YxK\T5X
l%w"R c-mZAR+F2~??? private String selectedUsers[] = new String[0];
!cS1G}2D J i??? public String[] getSelectedUsers () {return selectedUsers;}JAVA中文站社區門戶0r C(f[O
??? public void setSelectedUsers (String[]selectedUsers) {this.selectedUsers = selectedUsers;}
KLnKkA8P)^ JAVA中文站社區門戶 u9G e"r'Z7@+u9x
如果我們在初期時在action里對bean賦值:
7P%z_(q}auserList = { User(”1”,”name1”), User(”2”, ”name2”), User(”3”,”name3”) }
ek?^,}ZiselectedUsers = {“1”,”3”}
PH%KG$FV#b%l2z8`*O那畫面選中第一第三個選擇框.
gV+K^9lE.z$G JAVA中文站社區門戶-LXL7rXS
用戶修改選擇框,選擇了第二,第三個,那么在action里取bean的值
Y!Iz0u:n)a/qlG bString selectedItems[] = new String[list.getSize()];
L#z-^W)GDj0Ik,C UselectedItems = form.getSelectedItems();JAVA中文站社區門戶W'J(l&f"wn
for ( int i = 0 ; i <? selectedItems.length ; ++i ){JAVA中文站社區門戶*Ua `d8d
? LOGGER.debug( "selected " + i + ": " + selectedItems[i]);
U kQH f}
;zD4w6c-ESelected 0 : 2 JAVA中文站社區門戶A*J9M6Ek#?3m
Selected 1 : 3JAVA中文站社區門戶L Fkt'BW2T
selectedUsers = {“2”,”3”}
+P(|#|*\D.CL
Y b%k4QF0q⑤畫面上有一user表,每條數據前面有個button,對應一條記錄,如何確定選中那條數據呢??
A'L^R"US4{QSampleJsp:
lMbA oh,zZs< logic:iterate id="user" indexId="buttonIndex" name="sampleForm" property="userList">JAVA中文站社區門戶A!d h2x x"C/FURZ
< tr>JAVA中文站社區門戶yO @ f vn&\sFD8\|
< td>
4t$\Fn1U*nC0F^< html:submit property="button" indexed='false' >JAVA中文站社區門戶y [z]#r^'Ip(dA*t
< bean:message key="label.button.selectUser"/>JAVA中文站社區門戶"cT(ae+\D
< /td>JAVA中文站社區門戶k_f@{7A5F'i+GU8w
< td>< bean:write name="user" property="id" />< /td>JAVA中文站社區門戶(fShe,IDe
< td>< bean:write name="user" property="name" />< /td>JAVA中文站社區門戶(P0A`m[ c
< /tr>JAVA中文站社區門戶#}i;N0YMc*l
< html:hidden name="sampleForm" property="selectUserIndex" value='< %= "" + buttonIndex %>'/>JAVA中文站社區門戶,Me!x+} i }v
< /logic:iterate>
;wD*E*\jjs.yC0| JAVA中文站社區門戶PsE3O ` g{
SampleAction.java
c C IOjh.~e?? int index = Integer.parseInt(form.getSelectUserIndex());
1Eu|1sz6mdn;r3[P?? 通過一個隱藏變量,得到選中第幾條數據,然后就能做相應處理.JAVA中文站社區門戶[d2I~s
,e&o@aoAB8g⑥上面都是通過form和jsp傳輸數據的.還有session也能讓jsp顯示數據.但如果我做為設計者,是不提倡這樣做的.為什么就不說了.但日本以前的設計很可能會用到session和jsp傳數據.那我就有必要講一下如何用了?做為高達的設計者還是盡量不要用session和jsp溝通.JAVA中文站社區門戶&P T]t!br \*R/D
有個下拉列表框,里面顯示所有用戶名稱.用session傳數據.JAVA中文站社區門戶%y N@fF9Ox1s
SampleJsp:
1l&p5p@,|< %pageContext.setAttribute("userList",(List) (FwThreadContext
m5n-]2K@:{,S+i??????????????? .getAttribute("AllUser")));JAVA中文站社區門戶V;d {+kp^,] t
%>JAVA中文站社區門戶v7V-L0Pd!c:ay
< html:select property="selectedUser"> JAVA中文站社區門戶"FcE(WT&O I
? < html:options collection="userList" property="id" labelProperty="name" />
PSH$O'X6F< /html:select>JAVA中文站社區門戶Y8lE(@C8PR
JAVA中文站社區門戶Q6K lA Y_;db
SampleForm.java:
"uH1k%UR'^ Mk6}??? String selectedUser;
A9`r2`-tg ^n| _Form里只要一個selectedUser,表示選擇的user. 下拉列表框用session表示.JAVA中文站社區門戶)R6zAM*?'}
在action等地方設置了session的內容,那下拉列表框就能顯示內容了.這里session名為AllUser, labelProperty="name"是下拉列表框顯示的東東, property="id"是下拉列表框每條數據隱藏的東東.通過property="selectedUser"里得到選中那條數據
W_ R8p:O*@Pn x
'c3|C6X{7`3w&d ^S$m< html:text name="sampleForm" property="name"
t0[l+G5X1g{hvalue="< %= (FwThreadContext.getAttribute("UserName")).toString() %>" />JAVA中文站社區門戶Z;zIUBUR
這里很簡單就是把session名為UserName設置到Text框中.得的時候還是通過form中的name得到.
h,u _C,^$E3QIR9No
W!NK1s_~)E4?.WZ tF
#s C6c1p0YyI%SS標簽寶典:
(o)i-ap @1,lable
xhDioA6N|< bean:write name="sampleForm" property="name" />
QDa2zv2,text
8~/U2KV@%YnV< html:text name="sampleForm " property="name" />
aII4R6`5M3,button
%e ]vn@{ }zG< html:submit property="button">JAVA中文站社區門戶9FQQS]
< bean:message key="label.button.save" />JAVA中文站社區門戶\6_yX}.F'U
< /html:submit>JAVA中文站社區門戶'e6{Et&|
< html:button property="button" οnclick="javascript:openCalendar(date);">
3I}7r,L)qd0e|< bean:message key="label.button.date" />
0_e&v!s5EZ< /html:button>
0W!Z7Y9m]-VO4yC4,select
.t5BbY(B r!Q"U)j4S< html:select property="selectedUser"> JAVA中文站社區門戶pV2VYZo+?;@
? < html:options name="sampleForm" collection="userList" property="id" labelProperty="name" />JAVA中文站社區門戶]G*Ru&sE
< /html:select>
UYqnK_2U3d5,checkbox,multibox
,G-y8Q+wJG? < html:checkbox name="sampleForm" property="chechbox1" value="true" />JAVA中文站社區門戶UR%bS kL5w
?
%[^Le Od-x.cX5nd? < logic:iterate name = "sampleForm" id="user" property="userList">JAVA中文站社區門戶9q(t2Fe+fo
??? < html:multibox property="selectedUsers">
2j9`m/Nb@???? < bean:write name="user" property="id"/> JAVA中文站社區門戶,Q~ V"k?5k6mWz/?2Q
??? < /html:multibox>
(pF;VM/C*MQ??? < bean:write name="user" property="name"/>
`@8e'D:m]`e/{? < /logic:iterate>JAVA中文站社區門戶%T!w-`"Q{
p$c(W:ns^[6, 循環邏輯JAVA中文站社區門戶l*Fo2Ts5W
< logic:present name="sampleForm" property="userList" >
8wWnFWw^'lk0mp'y< logic:iterate id="user" name=" sampleForm " property="userList">JAVA中文站社區門戶`U,]lI`7r ?(]%?
< tr>
e"kO6{ I g5N*@e? < td>
;Q(N\.\?J+o+? V? < html:radio name="sampleForm" property="selectedUserId" value="< %= ((jp.co.mhcb.obs.persis.entity.User)pageContext.getAttribute("user ")).getId().toString() %>" />JAVA中文站社區門戶 pFT8L:M%~9zz
? < /td>
V/S$G B0Fl6Z:z \? < td>< bean:write name="user" property="id" />< /td>
k;e"H&B6c\#`? < td>< bean:write name="user" property="name" />< /td>JAVA中文站社區門戶IrRj2QCJ/vp
< /tr>JAVA中文站社區門戶6e0U!i~ DQc7}"Q
< /logic:iterate> JAVA中文站社區門戶9n4]]P}
< /logic:present>JAVA中文站社區門戶3bP axI4{
JAVA中文站社區門戶S&l }5x;|*?d HUU
7,if邏輯
wP }1VR_< logic:equal name=" sampleForm " property="showAllFlg" value="true" >JAVA中文站社區門戶i7lmk s v{$W-R
? < html:submit property="button">JAVA中文站社區門戶I9vLI"J
??? < bean:message key="label.button.all"/>
mXO8x_r:_%Q3p? < /html:submit>
;wO0j{9v< /logic:equal>JAVA中文站社區門戶-f$Ws1ZGa2bO4\1R*|!\:c'~
< logic:equal name=" sampleForm " property=" showAllFlg " value="false" >JAVA中文站社區門戶]:a^@]3g
? < html:submit property="button">JAVA中文站社區門戶 ^E+Jgd6F
??? < bean:message key="label.button.noall"/>JAVA中文站社區門戶s'^nc1fw ^{4N
? < /html:submit>
/Z&XC H'AH< /logic:equal>??
vw"M4QxJAVA中文站社區門戶:xsk%s!mL_?