Как динамически передать тег param в JSTL-запрос? - PullRequest
0 голосов
/ 24 февраля 2020

Я использую тег запроса JSTL для выполнения запроса mysql следующим образом:

<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>

Это работает, и теперь я пытаюсь установить параметры динамически, создавая их в виде строки, а затем помещая в тег. Измените последний тег param на строку и проверьте. В сценарии

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

В теге запроса используйте строку в качестве последней строки

<%=test %>

Но этот сбой во время работы. Сообщение об ошибке: «Для параметра 16 не указано значение». Я предполагаю, что он анализируется как строка и не работает как обычный параметр. Есть идеи, что я могу избежать этого? Ниже приведены подробные сообщения об ошибках, в которых показана последняя строка, которая не должна (должна анализироваться как тег jtsl)

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
...