zoukankan      html  css  js  c++  java
  • struts JSP表单数据的显示和回显

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

  • 相关阅读:
    GitLab版本管理
    Failed to add reference to 'System.Net.Http'. Please make sure that it is in the Global Assembly Cache.
    在CentOS 6.3中安装拼音输入法
    Yum Error Another app is currently holding the yum lock; waiting for it to exit
    Centos使用光盘作为本地yum源
    Linux操作系统桌面环境GNOME和KDE的切换
    CentOS安装VMware Tools
    CentOS 加载/挂载光驱
    svn Couldn't open rep-cache database
    linux内存排查工具valgrind
  • 原文地址:https://www.cnblogs.com/liushisaonian/p/6953365.html
Copyright © 2011-2022 走看看