0

I'm using the JSTL query tag to do the mysql query as following:

<sql:query var="altTime" dataSource="${dataSource}" scope="request">
     SELECT distinct combined.alt_tm FROM (
      SELECT distinct sal_tm as alt_tm FROM sales WHERE sal_snum=? AND sal_dt=? AND sal_trn=? AND sal_trm=?
      UNION ALL
      SELECT distinct tm_cr as alt_tm FROM credit WHERE stc_cr=? AND ym_cr=? AND trn_cr=? AND trm_cr=?
      UNION ALL
      SELECT distinct tm_nm as alt_tm FROM nmc WHERE stc_nm=? AND ym_nm=? AND trn_nm=? AND trm_nm=?
      UNION ALL
      SELECT distinct tm_gc as alt_tm FROM gift WHERE stc_gc=? AND ym_gc=? AND trn_gc=? AND trm_gc=?
     ) AS combined WHERE alt_tm != '00:00:00' LIMIT 1
     <sql:param value="${store}"/>
     <sql:param value="${date}"/>
     <sql:param value="${trans_no}"/>
     <sql:param value="${terminal}"/>
     <sql:param value="${store}"/>
     <sql:param value="${date}"/>
     <sql:param value="${trans_no}"/>
     <sql:param value="${terminal}"/>
     <sql:param value="${store}"/>
     <sql:param value="${date}"/>
     <sql:param value="${trans_no}"/>
     <sql:param value="${terminal}"/>
     <sql:param value="${store}"/>
     <sql:param value="${date}"/>
     <sql:param value="${trans_no}"/>
     <sql:param value="${terminal}"/>
 </sql:query>

It works and now I'm trying to set the params dynamically by create it as a string and then put it into the tag. Change the last param tag to a string and test. In script

String test="<sql:param value=\"${terminal}\"/>";

In query tag, use the string as the last line

<%=test %>

But this fail while running. Error message: " No value specified for parameter 16"My guess is that it's parsed as a string and didn't run as a normal param. Any ideas that I can avoid this? Detail error messages below, it shows the last string which it shouldn't (should be parsed as a jtsl tag)

Exception handling request to /kwi_demo/generic2/ecd/ecd1.jsp: org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException:
                                        SELECT distinct combined.alt_tm FROM (
                                                SELECT distinct sal_tm as alt_tm FROM sales WHERE sal_snum=? AND sal_dt=? AND sal_trn=? AND sal_trm=?
                                                UNION ALL
                                                SELECT distinct tm_cr as alt_tm FROM credit WHERE stc_cr=? AND ym_cr=? AND trn_cr=? AND trm_cr=?
                                                UNION ALL
                                                SELECT distinct tm_nm as alt_tm FROM nmc WHERE stc_nm=? AND ym_nm=? AND trn_nm=? AND trm_nm=?
                                                UNION ALL
                                                SELECT distinct tm_gc as alt_tm FROM gift WHERE stc_gc=? AND ym_gc=? AND trn_gc=? AND trm_gc=?
                                        ) AS combined WHERE alt_tm != '00:00:00' LIMIT 1















                                        <sql:param value=${terminal}/>
                                : No value specified for parameter 16
Brett
  • 1
  • 1

0 Answers0