我有一个 JavaScript 文件:
informacoesImportantes.js
,其中有一个函数可以生成 Whatsapp 的目标 URL。
我需要获取 URL 并将其作为参数传递给
qrCode.do
操作,但显然,它甚至在生成链接之前就调用了 qrCode.do
操作,因为它总是变空,但是当我打开浏览器控制台并打印变量,链接就在那里。
我正在尝试向
Action
发送一个参数,但该参数来自 JavaScript 函数。我用<c:set>
尝试了几种方法,甚至在javascript:
中设置的参数后直接调用src
,但没有成功。
informacoesImportantes.js
:
function gerarUrlWhatsapp(especialidade,data,hora,medico,unidadeMedica,enderecoCompleto) {
var texto = "Seguem dados de confirma\u00e7\u00e3o do agendamento: "+"\n"+
" Especialidade: "+especialidade+"\n"+
" Data: "+data+"\n"+
" Hora: "+hora+"\n"+
" M\u00e9dico: "+medico+"\n"+
" Unidade "+unidadeMedica+"\n"+
" Endere\u00e7o: "+enderecoCompleto + "\n"+
" Informa\u00e7\u00f5es 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>