首页 > 解决方案 > 从 JavaScript 函数获取返回 URL 并将其作为参数发送到操作

问题描述

我有一个 JavaScript 文件:informacoesImportantes.js其中有一个函数可以生成 Whatsapp 的目标 URL。

您需要获取 URL 并将其作为参数传递给qrCode.do操作,但显然它qrCode甚至在生成链接之前就调用了,因为它总是为空,但是当您打开浏览器控制台并打印变量时,链接就在那里。

我正在尝试向 发送参数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);
}

标签: javascripthtmljspstruts2struts

解决方案


您不能在<img src=. 但是你可以修改src属性的值。如果id向标签添加属性,<img>则可以在调用自定义函数后从documentusing JavaScript 和 modify属性中获取此元素。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>

推荐阅读