前台知识

本文介绍了前端与后端开发中的实用技巧,包括复选框判断、字段替换、下拉框构建、条件判断、参数传递等操作,并展示了如何在实体Bean中实现排序,以及解决懒加载和复杂查询等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、判断复选框是否被选中的代码:

$("input[name='planCde']").each(function(){

                            if($(this).prop("checked")!=false){

                                        ids += $(this).val()+",";

                                     }

                   });

2、前台显示时,字段的替换:

<select  name="firstCompanyId" onchange="changeCompany1(3);changeDept(this);">

   <option value="">==请选择==</option>

   <c:forEach items="${firstCompanyList}" var="list" >

       <c:choose>

           <c:when test="${list.comCde==firstCompanyId}">

              <option value="${list.comCde }" selected="selected">

           ${fn:replace(list.comName,'中国人民财产保险股份有限公司','') }

              </option>

           </c:when>

           <c:otherwise>

              <option value="${list.comCde}">

           ${fn:replace(list.comName,'中国人民财产保险股份有限公司','') }

              </option>

           </c:otherwise>

       </c:choose>

    </c:forEach>

</select>

3、下拉框控件:

<select name="tbFinding.reworkDept">

                   <option value="">请选择</option>       

                   <s:iterator value="tbDepartmentList">

                            <option value="${deptCode}">${deptName}</option> 

                   </s:iterator>

</select>

4<s:if>的用法(注意单引号和双引号位置):

<option value="未能按原计划完成" <s:if test="${tbReworkTrace.reworkTraceStatus=='未能按原计划完成'}">selected="selected"</s:if>>未能按原计划完成</option>

 

5struts2不同action间传递参数(加&amp;  且可以使用el表达式,也就是说在链接中用&amp;代替&):

<!-- 下载文件 -->

       <action name="download" class="cn.com.picc.innerControl.icManage.action.TbKeyFindAction" method="download">

            <result name="ok"  type="redirect">${ctx }/finding/toLookKeyJobFindingPage.action?findingType=2&amp;tbFinding.findingCde=${findingCde}</result>

       </action>

 

6s:selectselects:iterator代替:

<select name="processOptimize.optimizeType" id="optimizeType">

                 <option value=""  <s:if test="${processOptimize.optimizeType==0}" > selected="selected" </s:if> >请选择</option>

                    <s:iterator value="processOptimizeTypeList">

                      <option value="${optimizetypeId }" <s:if test="${processOptimize.optimizeType==optimizetypeId}" > selected="selected" </s:if> >${optimizetypeName }</option>

                    </s:iterator>

 </select>

7、当后台传递了两个json格式的字符串时,应主意“键值对”都要加双引号,前台解析的时候,要用eval解析,如下:

后台写法(其中optTypecode为两个字符串变量):

String jsonData = "{\"optType\":\""+optType+"\",\"code\":\""+code+"\"}";

       PrintWriter out=ServletActionContext.getResponse().getWriter();

       out.print(jsonData.toString());

       out.flush();

       out.close();

前台写法():

$.ajax({

       url : "${ctx }/reworkRequest/saveReworkRequest.action",

       type : "post",

       data : {"tbBugAnalyseConfirm.bugCde":conformBugid,"docGroupCode":docGroupCode,"requestName":requestName,"timeEnd":requireTime,"optType":optType,    "reworkReqCde":reworkReqCde,"tbReworkRequest.reworktbCompany.deptCode":remarkCompanyId,"tbReworkRequest.reworkDepartment.deptCode":dutydepartment},

       cache : false,

       success: function(data) {

              var node = eval("("+data+")");

              if(node.optType=='tijiao'){

                             window.location.href="${ctx }/reworkRequest/findBugConfirmList.action";

              }else{

                             window.location.href="${ctx }/reworkRequest/toEditReworkRequest.action?tbBugAnalyseConfirm.bugCde="+node.code+"&optType=edit";

              }

              alert("保存成功");

                    

           },

           error: function(data) {

                  alert("保存失败!");

           }

    });

8、当一个list里面又有一个list时,里面的list也想排序,则可以在实体bean里加一个注解方式的排序,如下:

@OneToMany(cascade = CascadeType.REMOVE, fetch = FetchType.LAZY, mappedBy = "flowPrcess")

    @OrderBy("sequenceNum asc")    重点语句

    public Set<TbStep> getTbstepSet() {

       returntbstepSet;

    }

 

    publicvoid setTbstepSet(Set<TbStep> tbstepSet) {

       this.tbstepSet = tbstepSet;

    }

9、当一个实体bean中定义了懒加载时,则在每次用到的时候,需要手动调用懒加载方法,不然会报错。

Eg:

    @Transient

    publicvoid initLazyDepartment(){

       ComDepartment newDepartment = null;

       if(department != null){

           newDepartment = new ComDepartment();

           newDepartment.setCodePath(department.getCodePath());

           newDepartment.setComCode(department.getComCode());

           newDepartment.setCompany(department.getCompany());

           newDepartment.setComType(department.getComType());

           newDepartment.setDepartment(department.getDepartment());

           newDepartment.setDeptCode(department.getDeptCode());

           newDepartment.setDeptName(department.getDeptName());

           newDepartment.setDeptPCode(department.getDeptPCode());

           newDepartment.setGrades(department.getGrades());

           this.setDepartment(newDepartment);

       }

    }

使用时的调用方法:

for (OperateLine operateLine : operateLineList) {

                  operateLine.initLazyDepartment();

              }

10、当想用detachedCriteria查询,但是被查询的对象里有对象时,可以用中间变量的方式:

int pageSize = Integer.parseInt(getRequest().getSession().getServletContext().getInitParameter("pageSize"));

       DetachedCriteria detachedCriteria = DetachedCriteria.forClass(ExcAthyNotice.class);

       detachedCriteria.addOrder(Order.desc("createDateTime"));

       if(excAthyNotice != null){

           if(excAthyNotice.getNoticeName() != null && !"".equals(excAthyNotice.getNoticeName().trim())){

              detachedCriteria.add(Restrictions.like("noticeName", "%"+excAthyNotice.getNoticeName()+"%"));

           }

           if(excAthyNotice.getCreateDateTime() != null && !"".equals(excAthyNotice.getCreateDateTime())){

              detachedCriteria.add(Restrictions.like("createDateTime", "%"+excAthyNotice.getCreateDateTime()+"%"));

           }

           if(excAthyNotice.getStatus() != null && !"".equals(excAthyNotice.getStatus())){

              detachedCriteria.add(Restrictions.eq("status", excAthyNotice.getStatus()));

           }

           if(excAthyNotice.getSystemuser() != null && excAthyNotice.getSystemuser().getUserName()!= null && !"".equals(excAthyNotice.getSystemuser().getUserName())){

              detachedCriteria.createAlias("systemuser", "user");

              detachedCriteria.add(Restrictions.like("user.userName", "%"+excAthyNotice.getSystemuser().getUserName()+"%"));

           }

       }

      

       pager = excAthyNoticeService.getExcAthyNoticeList(getPageNo(),pageSize,detachedCriteria);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值