Jaspersoft Studio 6.6.0中JSONQL获取下一个港口locCode的表达式修复请求
修复Jaspersoft Studio JSONQL表达式获取下一个港口名称
你的JSONQL表达式当前匹配的是isCurrentLoc="Y"的对象自身的locCode,所以返回的是当前港口TRYAR。要获取该对象的下一个港口,需要调整表达式定位到当前节点的后续兄弟节点,或者利用callOrder的顺序关系来匹配。
方法一:使用following-sibling轴定位下一个节点
这是最直接的方式,先找到当前港口节点,再取它的第一个后续兄弟节点的locCode:
routingLocs[isCurrentLoc == "Y"]/following-sibling::*[1]/locCode
修改后的JRXML字段定义:
<field name="nextPort" class="java.lang.String"> <property name="net.sf.jasperreports.jsonql.field.expression"> <![CDATA[routingLocs[isCurrentLoc == "Y"]/following-sibling::*[1]/locCode]]> </property> <fieldDescription><![CDATA[nextPort]]></fieldDescription> </field>
方法二:利用callOrder数值关系匹配
如果港口的callOrder是严格递增的,也可以通过当前节点的callOrder+1来定位下一个港口:
routingLocs[callOrder = (routingLocs[isCurrentLoc == "Y"]/callOrder) + 1]/locCode
两种方法都能正确返回AUABP,根据你的数据源结构选择即可。
内容的提问来源于stack exchange,提问作者Meet Bhatt
相关产品推荐
相关产品推荐

