Запустить Java-метод в Javascript в шаблоне Freemarker - PullRequest
0 голосов
/ 15 октября 2018

Я хотел бы запустить метод над моим Java-объектом в шаблоне Freemaker, но в Javascript.Может быть также непосредственно во Freemarker, но мне нужно запустить его по клику.

У меня проблема с тем, что следующий метод не запускается:

actual_id.setActual_id(variable) ;

И у меня есть следующий код Java:

Setting actual_id= new Setting("-");

Map<String, Object> data = new HashMap<>();
data.put("items", items);
data.put("actual_id", actual_id);

public Setting(String actual_id) {
    this.actual_id = actual_id;
}

public String getActual_id() {
    return actual_id;
}

public void setActual_id(String actual_id) {
    this.actual_id = actual_id;
}

Это мой шаблон Freemaker:

<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
<script>function myFunction(variable) {
alert(variable);
actual_id.setActual_id(variable) ;
location.reload();}
</script>

<#list items as item>
<p>${item.name}: ${item.id} <button type="button" id="${item.id}" onclick=myFunction("${item.id}") >Details</button>
    </#list> 

РЕДАКТИРОВАНИЕ1:

Я также пытаюсь что-то вроде этого:

onclick="${actual_id.setActual_id(item.id)}"

но не может вызвать активацию из-за щелчка.

EDIT2:

Я уже почти нашел решение.Следующий код выполняет Java-метод, мне просто нужно выяснить, как заключать в кавычки «переменную» для загрузки в нее значения javasript.

function myFunction(variable) {
    alert(variable);
    var idd ="${actual_id.setActual_id(variable)}";//here variable value needed
    alert(idd);
    location.reload();
}

1 Ответ

0 голосов
/ 16 октября 2018

Вот цитата из Apache FreeMarker Главная страница проекта: (https://freemarker.apache.org/)

Что такое Apache FreeMarker ™?

Apache FreeMarker ™является механизмом шаблонов: библиотекой Java для генерации текстового вывода (веб-страницы HTML, электронные письма, файлы конфигурации, исходный код и т. д.) на основе шаблонов и изменения данных. Шаблоны написаны на языке шаблонов FreeMarker (FTL), которыйэто простой специализированный язык (не полноценный язык программирования, такой как PHP). Обычно для подготовки данных используется язык программирования общего назначения (например, Java) (выдача запросов к базе данных, выполнение бизнес-вычислений). Затем Apache FreeMarkerотображает подготовленные данные с использованием шаблонов. В шаблоне вы сосредотачиваетесь на том, как представлять данные, а вне шаблона вы сосредотачиваетесь на том, какие данные представлять.

Рисунок [ Фотография / изображение не опубликованы ]

Этот подход часто называют паттерном MVC (Model View Controller) и особенно популярен.ar для динамических веб-страниц.Это помогает отделить дизайнеров веб-страниц (авторов HTML) от разработчиков (обычно программистов на Java).Дизайнеры не столкнутся со сложной логикой в ​​шаблонах и могут изменить внешний вид страницы без необходимости изменения или перекомпиляции кода программистами.

Хотя FreeMarker изначально создавался для создания HTML-страниц в средах веб-приложений MVC, **он не привязан ни к сервлетам, ни к HTML, ни к чему-либо связанному с Интернетом. ** Он также используется в средах вне веб-приложений.

https://freemarker.apache.org/

IЯ сам программирую веб-серверы Java и JavaScript на Google Cloud Server весь день. Единственный способ заставить функцию JavaScript взаимодействовать с функцией Java - это HTTP GET / POST вызов Java-сервлет или, кроме того, старая школа JSP Page .Хотя прямо на странице домена верхнего уровня веб-сайта говорится (подробно), что «Freemarker не связан с сервлетами» - это фактически означает, что классы / пакеты программного обеспечения вообще не должны работать внутри веб-среды - возможно,на вашем настольном компьютере без веб-браузера.

Что я знаю с чрезвычайно высокой степенью достоверности , так это то, что связь между клиентом (в веб-браузере) и сервером (веб-сервер) всегда выполняется через HTTP GET / POST запросы.JSON, AJAX часто используются для передачи больших объемов данных.Если вы ожидаете, что метод JavaScript вызовет Java-класс на внутреннем сервере, вам нужно будет включить класс Servlet или JSP - и все 9 ярдов для загрузки.

ПРИМЕЧАНИЕ: Я не использовал Apache FreeMarker, но я программирую Java / JavaScript весь день.Суди соответственно!Согласно веб-сайту Apache, FreeMarker помогает «программно или автоматически генерировать HTML для страниц» (что хорошо в C #), что, собственно, я часто и делаю для своего веб-сайта, но (увы!) Я не использую продукт Apache.Это означает, что FreeMarker может помочь генерировать HTML более эффективно, используя Java-классы на стороне внутреннего сервера ...

Но правила взаимодействия Java и Java-Script имеютне изменилось ...

Короче говоря - вы должны включить вызовы JavaScript, такие как:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...