将参数传递给Querystring并激发Javascript函数

将参数传递给Querystring并激发Javascript函数,javascript,jsp,jakarta-ee,servlets,jstl,Javascript,Jsp,Jakarta Ee,Servlets,Jstl,我有一个搜索函数,它将对象的arraylist返回到我的表单中。我正在使用JSTL的foreach标记遍历列表 <c:forEach items="${searchResults}" var="contact" varStatus="loop"> <div style="padding: 5px;"> ${contact.firstName} ${contact.lastName} <br> ${contact.primaryPhone} <br>

我有一个搜索函数,它将对象的arraylist返回到我的表单中。我正在使用JSTL的foreach标记遍历列表

<c:forEach items="${searchResults}" var="contact" varStatus="loop">
<div style="padding: 5px;">
${contact.firstName} ${contact.lastName}
<br>
${contact.primaryPhone}
<br>

//Is this the proper way to set up the url?
<a href="Contacts?search=${param.search}&id=${loop.index}">View Contact</a>

</div>
<br>
</c:forEach>

${contact.firstName}${contact.lastName}

${contact.primaryPhone}
//这是设置url的正确方法吗?
当用户单击每行中的链接时,行索引将传递给querystring,此时我想显示一个包含有关用户的附加信息的div

我有一个javascript函数,我用它来显示div并将其放在屏幕的中心bla bla bla bla,但我的问题是如何使用加载到querystring中的索引刷新页面,然后启动javascript函数

我考虑使用:

<c:if test="${not empty param.id}">
//Check if id in querystring is available and if so, display popup
</c:if>

//检查querystring中的id是否可用,如果可用,则显示弹出窗口
检查querystring中是否有可用的索引,但我认为没有办法从JSTL标记中启动我的函数


当我请求返回servlet时,我应该在服务器端做些什么,而不是在客户端处理这个问题吗?我只是觉得重新查询数据库并设置另一个请求参数是一种浪费,因为我已经在参数中存储了所需的信息,而不是用来显示列表的信息。

您可以在参数检查中嵌入脚本标记,并在其中运行您想要的任何操作。例如,设置一些变量,您可以在页面加载完成后测试这些变量。 或者,如果在页面中嵌入参数检查的时间足够晚,只需调用函数即可

<c:if test="${not empty param.id}"> 
    <script>
        runSomeFunction();
    </script>
</c:if>

runSomeFunction();

您可以在参数检查中嵌入脚本标记,并在其中运行您想要的任何操作。例如,设置一些变量,您可以在页面加载完成后测试这些变量。 或者,如果在页面中嵌入参数检查的时间足够晚,只需调用函数即可

<c:if test="${not empty param.id}"> 
    <script>
        runSomeFunction();
    </script>
</c:if>

runSomeFunction();

我最终提出的解决方案是在每次加载页面时(使用javascript)在querystring中检查我的id参数

我用来检查查询字符串的函数是:

//Search querystring for a specific parameter. Second arg is the value to display if its not found.
function getQuerystring(key, default_)
{
  if (default_==null) default_="";

  key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regex = new RegExp("[\\?&]"+key+"=([^&#]*)");
  var qs = regex.exec(window.location.href);

  if(qs == null) {
    return default_;
  } else {
    return qs[1];
  }
}

我最终提出的解决方案是在每次加载页面时(使用javascript)在querystring中检查我的id参数

我用来检查查询字符串的函数是:

//Search querystring for a specific parameter. Second arg is the value to display if its not found.
function getQuerystring(key, default_)
{
  if (default_==null) default_="";

  key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regex = new RegExp("[\\?&]"+key+"=([^&#]*)");
  var qs = regex.exec(window.location.href);

  if(qs == null) {
    return default_;
  } else {
    return qs[1];
  }
}

这确实有效,但是为了保持一个更干净的html并将所有javascript保存在一个外部文件中,我提出了另一个解决方案。这确实有效,但是为了保持一个更干净的html并将所有javascript保存在一个外部文件中,我提出了另一个解决方案。