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=" 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=" 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=" 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=" 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中取值.