我有一个JavaScript文件:informacoesImportantes.js
,其中我有一个函数,生成一个目标URL到Whatsapp。
您需要获得URL并将其作为参数传递给qrCode.do
动作,但显然它甚至在生成链接之前调用qrCode
,因为它总是空的,但是当您打开浏览器控制台并打印变量时,链接就在那里。
我试图发送一个参数到Action
,但参数来自一个JavaScript函数。我用<c:set>
尝试了几种方法,甚至直接在src
中直接调用参数后的:javascript
,但没有成功。
informacoesImportantes.js
:
function gerarUrlWhatsapp(especialidade,data,hora,medico,unidadeMedica,enderecoCompleto) {
var texto = "Seguem dados de confirmau00e7u00e3o do agendamento: "+"n"+
" Especialidade: "+especialidade+"n"+
" Data: "+data+"n"+
" Hora: "+hora+"n"+
" Mu00e9dico: "+medico+"n"+
" Unidade "+unidadeMedica+"n"+
" Endereu00e7o: "+enderecoCompleto + "n"+
" Informau00e7u00f5es importantes:" + "n";
return "https://wa.me/?text=" + texto;
}
agendamentoDetalhe.jsp
:
<div class="col-sm-3 gnm-container-qrcode">
<script>
var urlWhats = gerarUrlWhatsapp('${ agendamento.especialidade.dsEspecialidade}','${dateParts[0]}','${dateParts[1]}','${agendamento.nomePrestador}','${agendamento.unidadeMedica.nome}','${agendamento.unidadeMedica.enderecoCompleto}');
</script>
<c:set var="qrCodeUrlWhatsapp" value="${urlWhats}" />
<img src="../qrCode.do?qrCodeUrlWhatsapp=javascript:gerarUrlWhatsapp('${ agendamento.especialidade.dsEspecialidade}','${dateParts[0]}','${dateParts[1]}','${agendamento.nomePrestador}','${agendamento.unidadeMedica.nome}','${agendamento.unidadeMedica.enderecoCompleto}');"/>
<p>${urlWhats}</p>
</div>
struts.xml
:
<action name="qrCode" class="**" method="qrCode">
<result name="success" type="stream">
<param name="contentType">image/jpeg</param>
<param name="inputName">qrCodeImage</param>
<param name="bufferSize">4096</param>
</result>
</action>
AgendamentoAction.java
:
public String qrCode() {
qrCodeImage = generateQrCodeImpl.createQrCode(accessToken, qrCodeUrlWhatsapp);
}
你不能在<img src=
中调用JavaScript函数。但是您可以修改src
属性的值。如果你添加一个id
属性到<img>
标签,那么你可以使用JavaScript从document
中获得这个元素,并在调用自定义函数后修改src
属性。
下面的脚本应该在JSP文件中,因此在呈现文档之前已经对EL表达式进行了计算。
<img id="qrCodeId" src="#">
<script>
var urlWhats = gerarUrlWhatsapp('${ agendamento.especialidade.dsEspecialidade}','${dateParts[0]}','${dateParts[1]}','${agendamento.nomePrestador}','${agendamento.unidadeMedica.nome}','${agendamento.unidadeMedica.enderecoCompleto}');
document.getElementById("qrCodeId").src="../qrCode.do?qrCodeUrlWhatsapp="+encodeURIComponent(urlWhats);
</script>