jsp從數(shù)據(jù)庫(kù)獲取數(shù)據(jù)填充下拉框?qū)崿F(xiàn)二級(jí)聯(lián)動(dòng)菜單的方法
本文實(shí)例講述了jsp從數(shù)據(jù)庫(kù)獲取數(shù)據(jù)填充下拉框?qū)崿F(xiàn)二級(jí)聯(lián)動(dòng)菜單的方法。分享給大家供大家參考,具體如下:
項(xiàng)目告一段落,現(xiàn)在將遇到的比較實(shí)用的東西記錄下來(lái),寫(xiě)了多遍了,謹(jǐn)記于此,以備查看!
1、首先在數(shù)據(jù)庫(kù)中獲取第一個(gè)下拉框的數(shù)據(jù):
<s:select listKey="tsFrom" id="t_tsfrom" cssClass="required" listValue="tsFrom" cssStyle="width:90" list="tsfrom1" name="tsFrom" theme="simple" headerKey="" onchange="getTsFromDescribe(this);" headerValue="--請(qǐng)選擇--" />
后臺(tái)處理:
@Autowired private CustomMaManager custommamanager;//注解相當(dāng)?shù)暮糜冒?,代碼都省了一大截 tsfrom1 = custommamanager.getTsFrom();
Service:
//得到投訴來(lái)源
public List<CustomManage> getTsFrom(){
return custommanagedao.getTsFrom();
}
dao:
/**得到產(chǎn)品類型**/
public List<CustomManage> getTsFrom(){
return this.find("SELECT distinct new CustomManage(tsFrom,'2') FROM CustomManage C WHERE C.tsFrom IS NOT NULL ORDER BY tsFrom ASC");
}
注意:Oracle在java代碼里取出重復(fù)值與SqlServer不一樣,它得使用:
先new實(shí)體bean(CustomManage) 然后在實(shí)體bean中給相應(yīng)字段設(shè)置構(gòu)造方法,不然將會(huì)出現(xiàn)后臺(tái)已經(jīng)返回了值,但是在前臺(tái)下拉框中不顯示,下拉框空白的現(xiàn)象。
public CustomManage(String khname,int s){
this.khname=khname;
}
public CustomManage(String cpname,String type){
if("1".equals(type)){
this.cpname=cpname;
}else if("2".equals(type)){
this.tsFrom=cpname;
}else if("3".equals(type)){
this.khname=cpname;
}
}
這里需要在bean的實(shí)體類里面加入相應(yīng)的構(gòu)造方法,以此來(lái)供去重使用。
至此第一級(jí)的數(shù)據(jù)準(zhǔn)備已經(jīng)差不多了。使用S標(biāo)簽的list集合來(lái)獲取后臺(tái)傳遞過(guò)來(lái)的值。
2、第二級(jí)下拉菜單的級(jí)聯(lián)====利用Ajax來(lái)獲取數(shù)據(jù)
在第一級(jí)列表的onchange事件中編寫(xiě):
//投訴信息來(lái)源信息級(jí)聯(lián)
function getTsFromDescribe(ts_describe){
var tsfrom = $("#t_tsfrom").val();
var tstsFrom = $("#ts_tsFrom").val();
Ext.Ajax.request( {
url : '${ctx}/complaints/complaints!getTsFrom.action',
params : {
tsfrom : tsfrom//通過(guò)json形式將前臺(tái)每次獲取到的值傳遞給后臺(tái)
},
success : function(response) {
var json = Ext.util.JSON.decode(response.responseText);
if (json.success) {
var data = json.<strong>cmList</strong>;
if ("" == data) {
alert("請(qǐng)選擇投訴類型");
inputForm.t_tsfrom.focus();
$("#ts_tsFrom").empty();//每次需要將上一次的數(shù)據(jù)進(jìn)行清空
} else {
$("#ts_tsFrom").empty();
//對(duì)獲取到的數(shù)據(jù)進(jìn)行迭代
for ( var i = 0; i < data.length; i++) {
var id = data[i];
var name = data[i];
$("#ts_tsFrom").append(
"<option value='" + id + "'>" + name + "</option>");
}
dwr.util.removeAllOptions('tstsFrom');
dwr.util.addOptions('tstsFrom', data);
}
}
}
});
}
后臺(tái)返回?cái)?shù)據(jù):
public void getTsFrom() throws Exception {
HttpServletResponse response = ServletActionContext.getResponse();
String ts_names = tsfrom;
List<CustomManage> list = complaintsmanager.getTsDescribe(ts_names);
response.setContentType("text/javascript"); // 后臺(tái)控制的代碼
PrintWriter writer = response.getWriter();
// 將得到的list集合轉(zhuǎn)為JSON對(duì)象傳給前臺(tái)處理
JSONArray j = JSONArray.fromObject(list);
writer.println("{'success':true,'<strong>cmList</strong>':" + j.toString() + "}");
}
到此一個(gè)從數(shù)據(jù)庫(kù)里動(dòng)態(tài)獲取值,并且實(shí)現(xiàn)二級(jí)菜單級(jí)聯(lián)的功能就做的差不多了。發(fā)表出來(lái)希望對(duì)你對(duì)我都有好處哈。
這里加注一點(diǎn)就是在修改的時(shí)候下拉框的值不會(huì)保存,就是上一次點(diǎn)擊提交的時(shí)候保存在數(shù)據(jù)庫(kù)里的值無(wú)法填充到下拉框。
處理辦法:
var op1 = document.getElementById("op1").value;
if(op1!=null){
$("#cp_validity").val(op1); //將取出來(lái)的值塞到下拉框中。一個(gè)蘿卜一個(gè)坑
}
<input type="hidden" id="op1" value="${compDisposal.validity}">//使用表達(dá)式將存在數(shù)據(jù)庫(kù)里的值取出來(lái),放在隱藏域里面
希望本文所述對(duì)大家jsp程序設(shè)計(jì)有所幫助。
- js實(shí)現(xiàn)的全國(guó)省市二級(jí)聯(lián)動(dòng)下拉選擇菜單完整實(shí)例
- JS實(shí)多級(jí)聯(lián)動(dòng)下拉菜單類,簡(jiǎn)單實(shí)現(xiàn)省市區(qū)聯(lián)動(dòng)菜單!
- javascript實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng)下拉框菜單
- 省市區(qū)三級(jí)聯(lián)動(dòng)下拉框菜單javascript版
- js實(shí)現(xiàn)簡(jiǎn)單的聯(lián)動(dòng)菜單效果
- js實(shí)現(xiàn)select二級(jí)聯(lián)動(dòng)下拉菜單
- JS簡(jiǎn)單實(shí)現(xiàn)多級(jí)Select聯(lián)動(dòng)菜單效果代碼
- 全國(guó)省市二級(jí)聯(lián)動(dòng)下拉菜單 js版
- 實(shí)例詳解AngularJS實(shí)現(xiàn)無(wú)限級(jí)聯(lián)動(dòng)菜單
- JavaScript+node實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)菜單
相關(guān)文章
JSP學(xué)習(xí)之?dāng)?shù)據(jù)庫(kù)開(kāi)發(fā)小結(jié)
這篇文章主要介紹了JSP學(xué)習(xí)之?dāng)?shù)據(jù)庫(kù)開(kāi)發(fā),較為詳細(xì)的分析了JSP數(shù)據(jù)庫(kù)操作所涉及的數(shù)據(jù)類型、函數(shù)、模式及數(shù)據(jù)操作相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09
img的src地址是一個(gè)請(qǐng)求的方式來(lái)顯示圖片方法
下面小編就為大家?guī)?lái)一篇img的src地址是一個(gè)請(qǐng)求的方式來(lái)顯示圖片方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03
實(shí)戰(zhàn) J2EE 開(kāi)發(fā)購(gòu)物網(wǎng)站 - 創(chuàng)建數(shù)據(jù)庫(kù)
實(shí)戰(zhàn) J2EE 開(kāi)發(fā)購(gòu)物網(wǎng)站 - 創(chuàng)建數(shù)據(jù)庫(kù)...2006-10-10
springMVC使用jsp:include嵌入頁(yè)面的兩種方法(推薦)
下面小編就為大家?guī)?lái)一篇springMVC使用jsp:include嵌入頁(yè)面的兩種方法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06
JDBCTM 指南:入門(mén)3 - DriverManager
JDBCTM 指南:入門(mén)3 - DriverManager...2006-10-10
JavaWeb Servlet中Filter過(guò)濾器的詳解
這篇文章主要介紹了JavaWeb Servlet中Filter過(guò)濾器的詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家徹底掌握如何使用,需要的朋友可以參考下2017-10-10
Jdbc連Sybase數(shù)據(jù)庫(kù)的幾種方法
Jdbc連Sybase數(shù)據(jù)庫(kù)的幾種方法...2006-10-10

