处理证人list界面时的问题

       证人和证据的关系:一个证人对应多个证据。

       该关系使用了动态枚举的方式,在建立一个案件的证据时,可以在证人信息的编辑界面,使用复选框组的形式,显示所有的证据信息。在编辑证人信息时,需要选择与其相关

的证据。

       在数据库中,证人表为t_jud_witness,其中proofs字段是与证据相关的。在选取多个证据之后,将会把证据的id存放进去,多个id之间使用“,”作为间隔。

以此为前提:

       在证人表的list界面中,需要显示与该证人相关的证据信息。效果:“证据1,证据2,证据3”。

       在使用<Combox:combox>时出现一个问题,虽然成功显示了证据的名字,但是在每个名字后多了一个空格。查询数据库发现,数据库中存放的数据正确,并没有空格存在。

查询原因发现,该现象是因为使用combox标签时,doTag方法里面使用的是println的方式进行输出的。 也就是说,默认换行输出。 在list界面中出现的这个空格,打开网页源代码

可以看到是换行所致。

      下面的代码可解决问题:

      <c:set var="n">\n<c:set>

      <c:if test="${tjudWitness.proofs != null}">

           <c:set var="objectIds" value="${fn:split(tjudWitness.proofs, ',')}" />

           <c:forEach items="${objectIds}" var="objectId" varStack="k">

                <c:set var="proofName">

                   <Combox:Combox rname="proof_names" isLabl="99" hql="select t.id, t.proofName from TjudProof t where t.id='${objectId}'" rvalue="${objectId}" />

                </c:set>${fn:replace(proofName, n, "")}${k.index < fn:length(objectIds)-1 ? ',' : ''}

          <c:forEach>

      </c:if>

       这窜代码的意思是:

      1.在证据字段不为空时,把证据的多个id拆分,并且存放近objectIds里面。

      2.对所有证据的id进行遍历,其中每一项命名为objectId,varStack设置为k

      3.使用combox标签内的hql语句将所有的证据的名字列出,基本功能到此完成。

      4.使用fn:replace将所有的换行字符替换为空字符串,使用<c:set>将"\n"设置为"n",否则使用replace时会报错,不能正确识别。 并且使用<c:set>标签,将查询出来的

(证据 1 ,证据2, 证据3 )设置为proofName方便替换。

      5.k的作用是拼接逗号,保证除最后一个证据外,每个证据后边都会有一个逗号。


      整个过程就是这样,虽然不是自己写出来的。但是经过仔细的分析,已经搞懂了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值