1.鏈接
1)<a href="${pageContext.request.contextPath}/visit/add.action />
2)<a href="${pageContext.request.contextPath }/customer/edit?cust_id=<s:property value="#customer.cust_id" />"
onclick="return window.confirm('你確認刪除么')">修改</a>//回顯數據后提交
2.普通的標簽
//普通標簽的save <s:textfield class="textbox" style="width: 180px" maxlength="50" name="cust_mobile" /></td> //普通標簽查詢之后save失敗會自動回顯 //普通標簽查詢后從值棧中取值 //push(對象) 里面有list這個屬性 <s:iterator var="customer" value="list"> <s:property value="#customer.cust_name"/> </s:iterator>
3.radio
//性別save <s:radio name="lkm_gender" list="#{1:'男',2:'女'}" /> //save失敗會自動回顯 <s:radio name="lkm_gender" list="#{1:'男',2:'女'}" /> //因為性別存入數據庫的是1,2所以查詢的時候要顯示 //push.set(pageBean)分頁,list是屬性 <s:iterator var="lk" value="list"> <s:if test="#lk.lkm_gender==1">男
</s:if><s:elseif test="#lk.lkm_gender==2"> 女 </s:elseif> //或者 ${lk.lkm_gender}也可以取到值 </s:iterator>
4.復選框
1)數據結構一對多用到字典表
保存數據庫里的數據
//customer和客戶級別是多對一用到的是字典表 /1.客戶 public class Customer { private long cust_id; private BaseDict cust_industry; // cust_industry int 客戶所屬行業 private BaseDict cust_level; // cust_level int 客戶級別。 public BaseDict getCust_industry() { return cust_industry; } public void setCust_industry(BaseDict cust_industry) { this.cust_industry = cust_industry; } public BaseDict getCust_level() { return cust_level; } public void setCust_level(BaseDict cust_level) { this.cust_level = cust_level; } } 1 001 黃金客戶 2 001 普通客戶 3 002 房產 4 002 金融 //2.字典表 public class BaseDict { private Long dict_id;//id private String dict_type_code;//對應的偽id比如001 private String dict_type_name; //對應的值比如 黃金客戶,普通客戶 public String getDict_type_code() { return dict_type_code; } public void setDict_type_code(String dict_type_code) { this.dict_type_code = dict_type_code; } public String getDict_type_name() { return dict_type_name; } public void setDict_type_name(String dict_type_name) { this.dict_type_name = dict_type_name; } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 方式1.先展示數據下拉菜單的數據異步請求的方式 1.先查詢后存入到值棧中json異步請求////////////////////////////////////////////////////////////////////////////////////////////////// <script type="text/javascript"> function loadDict(typedata, selectId) { //當頁面加載成功后 var url = "${pageContext.request.contextPath }/customer/dict.action"; var data = { "dict_type_code" : typedata }; //將返回來的數據給寫回到到頁面上 var callback = function(data) { $(data) .each( function(i, value) { var id = value.dict_id; var itemName = value.dict_item_name; var sid = $("#" + selectId + "Data").attr( "data");//做一個標記 console.log(sid); var option; if (id == sid) {//數據回顯... option = "<option value="+id+" selected='selected'>" + itemName + "</option>"; } else { option = "<option value="+id+">" + itemName + "</option>"; } //添加到 $("#" + selectId).append(option); }); }; $.post(url, data, callback, "json"); } $(function($) { loadDict("002", "level");//客戶級別 loadDict("001", "industry")//客戶行業 }); </script> 2.請求到action///////////////////////////////////////////////////////////////////////////////// /** * 異步查詢根據字典表查詢 * * @return */ private List<BaseDict> jsonDict; private String dict_type_code; public List<BaseDict> getJsonDict() { return jsonDict; } public void setJsonDict(List<BaseDict> jsonDict) { this.jsonDict = jsonDict; } public String getDict_type_code() { return dict_type_code; } public void setDict_type_code(String dict_type_code) { this.dict_type_code = dict_type_code; } ////////////////////////////////////////////////////////// public String do_dict() { // 離線條件查詢 DetachedCriteria criteria = DetachedCriteria.forClass(BaseDict.class); criteria.add(Restrictions.eq("dict_type_code", dict_type_code)); jsonDict = baseDictService.find(criteria);//返回json對象 return DICT_SUCCESS; } 3.struts配置////////////////////////////////////////////////// <result name="dict_success" type="json"> <param name="root">jsonDict</param> </result> 4.json返回取值//////////////////////////////////////////////////////////// <td >客戶級別 :</td> <td id='levelData' data='<s:property value="cust_level.dict_id" />'> <select class="textbox" id="level" style="width: 180px; height: 21px" maxlength="50" name="cust_level.dict_id"> <option value="0">請選擇</option> </select></td> <td id="industryData" data="<s:property value='cust_industry.dict_id' />">所屬行業 :</td> <td><select class="textbox" id="industry" style="width: 180px; height: 21px" maxlength="50" name="cust_industry.dict_id"> <option value="0">請選擇</option> </select></td> //save到數據庫 方式二:請求來的時候先查詢數據庫存入到值棧中后在jsp中取值/////////////////////////////////////////////////////////////////////////////////////////// 流程:1.添加鏈接--2.>findAll()-->3.add.jsp(添加頁面)---4.save() 2.action//////////////////////////////////////////////// public String do_add() { DetachedCriteria criteria = DetachedCriteria.forClass(Customer.class); List<Customer> list = customerService.findAll(criteria); ValueStack stack = ActionContext.getContext().getValueStack(); stack.set("customers", list); return ADD_SUCCESS; } 3.add.jsp//////////////////////////////////////////////// <td>所屬客戶:</td> <td colspan="3"><select name="customer.cust_id" class="textbox" style="width: 180px; height: 21px;"> <!-- <option value=0>請選擇</option> --> //#是遍歷取值 <s:iterator var="customer" value="customers"> //不加#是從值棧中取值 <s:if test="customer.cust_id==#customer.cust_id"> <option value='<s:property value="#customer.cust_id"/>' selected="selected"> <s:property value="#customer.cust_name" /> </option> </s:if> <s:else> <option value='<s:property value="#customer.cust_id"/>'> <s:property value="#customer.cust_name" /> </option> </s:else> </s:iterator> </select> 4.執行save()保存到數據庫////////////////////////////////////////////
5.1.修改數據表單的數據相似將id傳過去后,
2.查詢customer的所有的屬性, push 查詢的是一個對象
3.查詢關聯的所有對象,要讓客戶去選.stack.set("list",list);
4.在jsp中取值.