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>
5、struts2不同action间传递参数(加& 且可以使用el表达式,也就是说在链接中用&代替&):
<!-- 下载文件 -->
<action name="download" class="cn.com.picc.innerControl.icManage.action.TbKeyFindAction" method="download">
<result name="ok" type="redirect">${ctx }/finding/toLookKeyJobFindingPage.action?findingType=2&tbFinding.findingCde=${findingCde}</result>
</action>
6、s:select用select和s: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解析,如下:
后台写法(其中optType、code为两个字符串变量):
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);