jsp в javascript

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

Для этого я попытался вызвать функцию javascipt, когда я нажимаю флажок. Функция javascript содержит код для отображения текстовых полей. Но это не сработало.

Поскольку я делаю этот проект в struts, я не знаю, как получить значение флажка. И вызов функции JavaScript работает. Но не входил в код jsp в функции JavaScript.

Мой код

 <tr>
 <td>SEJ:</td>
 <td>SEJ 1:<html:checkbox property="sej1" value="on" onclick="checkbox_trial()"></html:checkbox></td>
 <td>SEJ 2:<html:checkbox property="sej2" value="on" onclick="checkbox_trial()"></html:checkbox></td>
 </tr>


  <script type="text/javascript">
  function checkbox_trial()
  {

        <% if(request.getParameter("sej1")=="on"){
    %> 
   <tr><td>SEJ1 Age<html:text property="sej1_age"></html:text></td></tr>
   <tr><td>SEJ1 DOI<html:text property="sej1_doi"></html:text></td></tr>
   <%} 

       else if(request.getParameter("sej2")=="on"){%>
   <tr><td>SEJ2 Age<html:text property="sej2_age"></html:text></td></tr>
       <tr><td>SEJ2 DOI<html:text property="sej2_doi"></html:text></td></tr>
   <%}

       else if((request.getParameter("sej1")=="on")&&(request.getParameter("sej2")=="on")){%>
   <tr><td>SEJ1 Age<html:text property="sej1_age"></html:text></td></tr>
   <tr><td>SEJ1 DOI<html:text property="sej1_doi"></html:text></td></tr>
   <tr><td>SEJ2 Age<html:text property="sej2_age"></html:text></td></tr>
   <tr><td>SEJ2 DOI<html:text property="sej2_doi"></html:text></td></tr>
   <%}

       else{%>
   NOTHING <% } %>
  }


person Pavalesh    schedule 17.01.2011    source источник
comment
Вы хотите опубликовать код, чтобы нам было на что ссылаться при попытке ответить на ваш вопрос? В частности, нам нужно увидеть HTML и JavaScript и только соответствующие части. Пожалуйста, не публикуйте весь свой проект ;)   -  person jmort253    schedule 17.01.2011


Ответы (1)


Вот как это работает: Java/JSP запускается на веб-сервере, создает HTML/CSS/JS, веб-сервер отправляет его в веб-браузер, веб-браузер запускает HTML/CSS/JS. Не Java/JSP. Щелкните правой кнопкой мыши страницу в веб-браузере и выберите Просмотр исходного кода. Если Java/JSP выполнил свою работу правильно, вы не должны увидеть там ни одной строчки.

Если вы хотите вызвать код Java/JSP с помощью JavaScript, вам нужно вызвать другой HTTP-запрос к веб-серверу, чтобы он мог выполнить код Java/JSP на основе конкретного запроса. Вы можете сделать это, отправив форму или выполнив асинхронный (ajaxical) запрос.

Учитывая продемонстрированные навыки и тот факт, что вы используете Struts, я думаю, что ajax будет слишком сложным. Я бы предложил просто отправить форму по щелчку флажка

<input type="checkbox" name="show" value="true" onclick="submit()" />

а затем пусть JSP условно отображает поля ввода (просто пример JSTL, так как я не использую Struts)

<c:if test="${param.show == 'true'}">
    <input type="text" />
    <select />
</c:if>

Обновление: кстати, у вас есть еще одна серьезная проблема в коде. Вы не можете сравнивать строковые значения по == в коде Java (вы можете сделать это только в EL). В коде Java вам нужно использовать метод equals(). В противном случае они будут сравниваться по ссылке, а не по значению. Я бы посоветовал также изучить основы Java.

person BalusC    schedule 17.01.2011
comment
Уродливое решение, но я согласен, основываясь на вопросе ОП (отсутствие опыта), что это, вероятно, лучше всего. Я определенно рекомендую OP в конечном итоге научиться использовать AJAX. - person jmort253; 17.01.2011
comment
В любом случае, если OP заинтересован, мой ответ на этот вопрос содержит хороший пример для первого Шаги Аякса. Однако это не предназначено для Struts. - person BalusC; 17.01.2011
comment
привет Балу, не могли бы вы объяснить первую строку примера JSTL. Так как я новичок в этом, я не могу понять - person Pavalesh; 17.01.2011
comment
По сути, это говорит о том, что если значение параметра запроса с именем show равно true, то показывать следующее содержимое. В скриптлете это то же самое, что и if (request.getParameter("show").equals("true")) (включая проверку нуля). JSTL/EL был представлен десять лет назад для замены скриптлетов. См. также Как избежать кода Java в файлах JSP? - person BalusC; 17.01.2011
comment
Возможно ли иметь этот код jstl и код создания флажка на одной и той же странице jsp. На самом деле я хочу отображать текстовые поля на той же странице, когда установлен флажок - person Pavalesh; 17.01.2011