重新總結struts標簽嵌套錯誤
首先,上一篇中轉的html:select標簽的示例二中的嵌套是錯誤的。
//比較beanname中的id是否和cl中的id相同,如果相同就顯示cl中的name
<bean:write name="cl" property="name"/>
</logic:equal>
</logic:iterate>
<bean:define id="temId" name="cl" property="id" type="java.lang.String"/>
<logic:equal name="beanname" property="id" value="<%=temId%>">
<bean:write name="cl" property="name"/>
</logic:equal>
</logic:iterate>
<bean:message key = "welcome.logon" bundle = "base"/>
</html:submit>
剛開始使用struts標簽時,很痛苦,三個人窩在實驗室里把struts罵了個遍,但用還是得用,而且強制用,必須學會。我因為之前用的是webwork,所以老是拿兩個做對比,不過現在好了,struts2出來啦!!
struts標簽的用法網上很多,這里也就不說了,要說的是在這次運用struts標簽過程中的一些問題和經驗。
1、頁面action嵌套,因為是分工合作,三個人分別完成各自模塊,最后進行組裝。所以避免不了,一個頁面會有多個action組成。那么怎么運用struts標簽進行action組裝呢?
<bean:include id="liststeptype" page="/step/steptype.html?event=listStepType" />
<bean:write name="liststeptype" filter="false"/>
先利用include創建一個id為liststeptype的模塊,page的值為指定action的url,再通過write將其顯示出來,filter如果為ture則顯示頁面源碼,為false顯示html頁面。
2、Date型數據的頁面顯示,理想狀態是顯示為“YYYY-mm-DD”,如果是formbean中的屬性還好辦一點,直接在進行數據類型轉換的時候就 把樣式給format了,但是如果是對象列表呢,通過循環標簽顯示,沒法利用struts標簽調用format函數(struts標簽不支持此功能),對 此想個多個方案,最高的一個是重寫Date的toString方法,最簡單的是利用bean:write 中的format的屬性(這是郁悶了很久后無意中發現的)。
3、formbean中不能接收Object類型的屬性,這點著實郁悶了很久,所以遇到需要用到Object類型的數據時只能再手動轉換。
4、復選框的運用。struts標簽中,到系統完成都沒能很好運用的便是復選框,所以每次遇到需要用到復選框就直接使用jsp標簽替代了,簡單快速。
5、struts標簽不能嵌套。struts標簽中的html標簽,一般來說value值為與property同名的formbean中的屬性值,當然value的值也能指定,但卻不能動態獲取,比如要想property1的value等于formbean中property2的值。對此討論除了兩個方案,使用jsp標簽或者EL表達式(即${property2})。
6、下拉框的運用。
<html:select property="mnEquipmentId">
<html:option value="0">------請選擇------</html:option>
<html:optionsCollection property="equipmentList" label="name" value="id"/>
或<html:options collection="equipmentList" labelProperty="name" property="id" />
</html:select>
把結果存入一個ArrayList作為 request 的一個屬性傳到頁面上, 這時一般用 <html:options .../> 標簽;如果數據放到 formbean里,作為屬性在頁面上取,這時一般用 <html:optionsCollection ... />
posted on 2011-05-30 15:33 強強 閱讀(659) 評論(0) 編輯 收藏 所屬分類: Java