struts2+hibernate做註冊頁面時,需要動態讀取數據庫裏寫好的興趣愛好。並且興趣愛好可以是多選的,這時如果單用select就不能滿足要求,
js中也代碼,需要用到struts2自帶的標籤,因此在開頭需要加入標籤庫:
<%@ taglib uri="/struts-tags" prefix="s"%>
<div > 興趣:
<DIV class=oneline id="interestdiv">
<SELECT id="interest" name="interest" multiple="multiple" style="width: 235px">
<s:iterator value="list" id="i">
<option value="<s:property value='#i.id'/>"><s:property value="#i.name"/></option>
//此處用到了迭代
</s:iterator>
</SELECT>
<input type="hidden" id="realInter" name="realInter"/>
</DIV>
注意:需要在select中加multiple="multiple這個屬性,這表示多選
在上面加入jquery方法,爲了實現多選,這是通過調用multiSelect這個方法來實現的,因此需要把這個方法導入進來,
//畫興趣愛好的界面-頁面初始化的時候就執行
$(document).ready(function(){
$("#interest").multiSelect({
selectAll: true,
oneOrMoreSelected: '*',
selectAllText: '全選',
noneSelected: '請選擇'
},function(obj,display,values){
$("#realInter").val(values);
});
});
//action中的方法例子
public String userRegister(){
Session session = HibernateSessionFactory.getSession();
Transaction tx = session.beginTransaction();
String [] str = realInter.split(","); //得到一個字符串的數組
try {
session.save(reg);
for(int i=0;i<str.length;i++){
if(str[i] != null && !"".equals(str[i])){ //需要迭代
TblUserInterest tblUserInterest = new TblUserInterest();
tblUserInterest.setUid(reg.getId());
tblUserInterest.setXid(Integer.parseInt(str[i]));
session.save(tblUserInterest);
}
}
session.flush();
tx.commit();
System.out.println("save success");
} catch (Exception e) {
tx.rollback();
e.printStackTrace();
}finally{
session.close();
}
return "success";
}