談select列表框

來源:互聯網
上載者:User
select

在JSP中用到select列表框就如家常便飯般的常見!
以下是我在JSP頁面中對此的一些心得(通常會用到Struts+Hebernate+Spring):
我想大概有以下幾種方法可以在JSP中得到我們想要的select列表框
1:通過使用HTML中使用普通的select定義

<select name=select>
    <option value=1>aa</option>
    <option value=2>bb</option>
    <option value=3>cc</option>
</select>

當然這樣可以實現,但是一旦用到相關的DB操作時,代碼中的業務,持久化,顯示處理各部分的代碼就會全部混到一起.

2:通過Struts的logic標籤

<logic:iterate id=types name=cglist type=com.jbbis.netedu.common.dto.BaseCategoryDTO> 
                       <option value=\'<bean:write name=types property=id/>\'> 
                      <bean:write name=types property=name/> 
                      </option>
       </logic:iterate> 

其中types代表了存放集合資料的一個控制代碼,在option中用到它.type是指你集合中的對象.在下面的option中的一些屬性值實際上就是指此對象中的欄位.比如說property=id, property=name.logic:iterate中的name屬性一般是從session,request中得到的,所以對於cglist,很可能在你的action中,有如下的代碼:

request.setAttribute(cglist,categorys);

or

session.setAttribute(cglist,categorys);

然後就是將其在bean:write標籤中輸出來.這種方法相比前一種對於DB操作顯然要方便,但是假如要在select中加入一些JS的話就比較麻煩了,比如要儲存它上次的選擇,用JS來實現顯得有些麻煩!

3:通過Struts的html:select標籤,將此標籤內建於html:form內(個人認為,最大的好處莫過於它可以自動儲存上次的記錄了!).

<html:select property=typeId onchange=gotothenews(this.value)>
                    <html:optionsCollection property=typeIds label=name value=id/>
    </html:select>
typeId為你Struts的ActionForm中對應的一個屬性,typeIds為ActionForm中的一個對象數組.name,id均為此數組中對象的屬性.lable在optionsCollection表示在select中要顯示的內容,value則表示其對應的值.
要注意的是此對象數組記得要全部初始化,比如說你定義的此對象數組若長度為7而你只執行個體化了6個,則會出現類似
org.apache.jasper.JasperException: No bean specified
的異常!
此方法不但對DB操作方便,而且在對儲存記錄方面也做得不錯呢.在Struts中JSP頁面中使用JS時,還老是出現一些意想不到的錯誤(不知道為什麼).

下次遇到了好的對策再貼上來......

相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。