上班一个月昨天写代码时,遇到一个需要输出每个人的预约时间。之前用的A标签,因为软件在微信公众号上使用,所以当链接过长时,微信会要用户复制该链接到浏览器上进行访问,此对用户是非常不友好的。所以把A标签改成用form 表单来进行提交。
<c:forEach items="${val.reginfo}" var="valreg" varStatus="regnum">
<c:if test="${!empty valreg.timeflag}">
<div class="pat-underline"> </div>
<c:choose><c:when test="${valreg.regleavecount!=null && valreg.regleavecount !='0'}">
<c:set var="wydate" value="${fn:split(valreg.regdate,'-')}"/>
<form id="${deptid}${val.doctorid}${regnum.index}${wydate[2]}" action="" method="post">
<input type="hidden" name="branchid" value="${branchid}"/>
<input type="hidden" name="regdate" value="${valreg.regdate}"/>
<input type="hidden" name="deptid" value="${deptid}"/>
<input type="hidden" name="doctorid" value="${val.doctorid}"/>
<input type="hidden" name="timeflag" value="${valreg.timeflag}"/>
<input type="hidden" name="openid" value="${openid}"/>
<input type="hidden" name="hospitalid" value="${hospitalid}"/>
<input type="hidden" name="regcee" value="${valreg.regcee}"/>
<input type="hidden" name="treatcee" value="${valreg.treatcee}"/>
<input type="hidden" name="doctorname" value="${val.doctorname}"/>
<input type="hidden" name="title" value="${val.title}"/>
<input type="hidden" name="doctordesc" value="${val.doctordesc}"/>
<input type="hidden" name="deptname" value="${deptname}"/>
<input type="hidden" name="branchname" value="${branchname}"/>
<input type="hidden" name="lockappointorderid" value="${lockappointorderid}"/>
<input type="hidden" name="cliunitid" value="${lockappointorderid}"/>
<input type="hidden" name="scheduleid" value="${valreg.cliunitid}"/>
<input type="hidden" name="sex" value="${valreg.sex}"/>
</form>
过程中一个医生对应对应多个form,因为预约分上午、下午和其他日期。此时遇到一个问题,点预约的时候会弹出对话框,要保证所有form的ID的唯一性,下面是当时写的对应的代码(没有加日期作为ID)
<tr onclick='choiseDoctor("${deptid}${val.doctorid}${regnum.index}");'>
当时就出现一个问题,如果用户选择其他日期的,form的ID还是当天的所以不可取;后来想到用天数当作ID(因为不想改后台的东西,所以在前台动手脚),当时百度半天,无果。
后来看到fn标签可以:fn:split()函数将一个字符串用指定的分隔符分裂为一个子串数组。果断用此方法,成功解决ID不唯一的问题
<c:set var="wydate" value="${fn:split(valreg.regdate,'-')}"/>
后台日期格式为2017-10-15,我以 - 字符进行分裂,会将日期分裂为数组,分别为年、月、日。我刚好取'日',来作为一个ID
fn:split()函数说明:http://www.runoob.com/jsp/jstl-function-split.html
本人第一次写,所以格式,排版方面有非常大的问题。希望各位读者多多见谅。也是为了给自己总结一下。大家看到后如果能提出什么更好,更优的方法,那我就谢谢大家了。