Передача параметра в функцию Querystring AND Fire Javascript - PullRequest
2 голосов
/ 24 ноября 2011

У меня есть функция поиска, которая возвращает массив объектов в мою форму. Я перебираю список, используя теги forest JSTL.

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

Когда пользователь щелкает ссылку внутри каждой строки, индекс строки передается в строку запроса, и в этот момент я хотел бы показать div, который содержит дополнительную информацию о пользователе.

У меня есть функция javascript, которую я использую для отображения div и центрирования его на экране, но мой вопрос в том, как обновить страницу с индексом, загруженным в строку запроса, и затем запустить мою функцию javascript?

Я подумал об использовании:

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

Чтобы проверить, был ли индекс доступным в строке запроса, но я не думаю, что есть способ вызвать мою функцию из тега JSTL.

Должен ли я что-то делать на стороне сервера, когда я обращаюсь к сервлету, а не пытаться обработать это на стороне клиента? Я просто полагаю, что это пустая трата для запроса моей базы данных и установки другого параметра запроса, когда у меня уже есть информация, которая мне нужна, хранящаяся в параметре, чем я использую для отображения своего списка в любом случае.

Ответы [ 2 ]

0 голосов
/ 24 ноября 2011

Решение, которое я в итоге придумала, заключается в проверке моего параметра id в строке запроса при каждой загрузке страницы (с использованием javascript)

function init(){
console.log("Contacts page loaded.");

//Loads popup if 'id' is present in the querystring.
if(getQuerystring('id', 'null') !== 'null') {
    showCenteredDiv('popup');
}
};

Функция, которую я использую для проверки строки запроса:

//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];
  }
}
0 голосов
/ 24 ноября 2011

Вы можете встроить тег скрипта в проверку параметров и запускать в нем все, что захотите. Например, установите некоторую переменную, которую вы сможете протестировать позже, когда страница закончит загрузку. Или, если вы ввели проверку параметров достаточно поздно на странице, просто вызовите свою функцию.

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