Используя JavaScript в теге JSP

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

Вы никогда не должны вводить индивидуальные идентификаторы в систему. Теперь это становится сложным, когда у вас есть поведение, которое вы хотите вести на основе компетенции. Это требует мышления на более высоком уровне абстракции. Например, допустим, у вас есть форма, в которой вы хотите показать еще одну вкладку, чтобы позволить клиенту выбрать, на каких самолетах сертифицирован пилот. Чтобы управлять этим, я обычно создаю флаги, которые фактически определяют поведение вождения (например, CAN_SELECT_PLANES) для добавления в связанную таблицу. Эта таблица определяет возможности системы, а не компетенции. Важно сохранить эту абстракцию, потому что клиенты захотят изменить название своей компетенции, и позже вы найдете новые варианты использования этой функции.

7
задан Community 23 May 2017 в 12:30
поделиться

4 ответа

Необходимо бороться за JavaScript в его собственных файлах. Это обычно делается с Прогрессивным Улучшением. Но несколько раз у Вас нет выбора, например, когда тот же JSP представляет страницы на различных языках. Вот реальный пример:

JSP:

  <script src="/javascript/article_admin.js"></script>  
  <script type="text/javascript">  
      NP_ArticleAdmin.initialize({  
            text: {  
              please_confirm_deletion_of: '<i18n:output text="please.confirm.deletion.of"/>',  
              this_cannot_be_undone: '<i18n:output text="this.cannot.be.undone"/>'  
            }  
      });  
  </script>  

JavaScript (article_admin.js):

 /*global NP_ArticleAdmin, jQuery, confirm */  
 NP_ArticleAdmin = function ($) {  
     var text;  

     function delete_article(event) {  
         var article = $(this).parents("li.article"),  
         id = article.attr("id"),  
         name = article.find("h3.name").html();  
         if (confirm(text.please_confirm_deletion_of + name + text.this_cannot_be_undone)) {  
             $.post("/admin/delete_article", {id: id});  
             article.fadeOut();  
         }  
         event.preventDefault();  
         return false;  
     }  

     function initialize(data) {  
         text = data.text;  
         $("#articles a.delete").click(delete_article);  
     }  

     return {initialize: initialize};  
 }(jQuery);

В этом примере единственный JavaScript в JSP-файле является частью, которая должна быть там. Базовая функциональность разделяется в ее собственном js-файле.

9
ответ дан 7 December 2019 в 01:28
поделиться

Я не совсем уверен, что Вы спрашивающий здесь, но я не делаю, существует что-то не так с включением <script> теги в JSP для инстанцирования кода JavaScript. Я часто следую этой модели, пишущий код библиотеки во внешних файлах JavaScript, и затем вызывая конструкторов к моим объектам от <script> теги.

Это делает отладку легкого, так как логика - все во внешних файлах (и поджигатель, кажется, испытывает затруднения отладить встроенный код JavaScript). Библиотеки кэшируются, но данные, инстанцирующие их, не делают (который является желаемым поведением).

Альтернатива должна иметь код инстанцирования, динамично сгенерированный во внешнем файле JavaScript или вызове Ajax. Я сделал это также с положительными результатами.

Я думаю, что решающий фактор - то, сколько динамических данных Вы имеете. Если бы необходимо представить большие структуры данных, я раздал бы его через вызов Ajax, который возвращает JSON. Если это - простой вызов конструктору, поместите его в JSP.

Что касается глобальной переменной, у меня часто будет глобальное для объекта верхнего уровня, который сбрасывает все с ноги. В этом, все другие ссылки на объекты помощника.

1
ответ дан 7 December 2019 в 01:28
поделиться

Хотя я соглашаюсь, что это не совсем изящно, я, как было известно, сделал это несколько раз при объединении решений серверной стороны с интегрированной средой AJAX. Повторение встроенного <сценарий>, теги для инициализации некоторых переменных, не являются ужасной вещью, пока никто не видит его.

Что касается лучших методов, я не знаю о них. Я делал это так редко, что я не искал более изящное или "надлежащее" решение.

0
ответ дан 7 December 2019 в 01:28
поделиться

Это соглашается с использованием <script> теги в соответствии с HTML. Существуют времена, когда это необходимо, но до любых лучших способов, которыми я не знаю. Не заставляя вещи казаться более сложным легче использовать <script> отметьте затем пытающийся найти способ реализовать js файлы.

0
ответ дан 7 December 2019 в 01:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: