Как передать значение переменной из фронта в бэкенд?

192
28 февраля 2022, 17:00

Например есть html страничка:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
    <title>Lern js</title>
</head>
<body>
<form action="add" onsubmit="convertArray(listOfNumbersId)">
    <textarea Id='listOfNumbersId' name="listOfNumbersName" col='20' rows='30'></textarea>
    <p><input id='listOfNumbersButton' type='button' value="Submit" onclick='showMe(listOfNumbersId)'></p>
    <p><input type="submit" value="Submit">
</form>
<script>
    var arrayOfLines = [];
    function showMe(message) {
        alert(message.value);
    }
    function convertArray(text) {
        arrayOfLines = text.value.split('\n');
        alert(arrayOfLines);
    }
</script>
</body>
</html>

Есть одна форма, при ее передаче значение элемента listOfNumbersName я смогу получить с помощью метода getParameter("listOfNumbersName") класа HttpServletRequest. В html формируется массив arrayOfLines, так вот как его передать и затем получить в java коде?

UPD: новый html:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
    <title>Lern js</title>
</head>
<body>
<form action="add" onsubmit="convertArray(listOfNumbersId)" method="post">
    <textarea Id='listOfNumbersId' name="listOfNumbersName" col='20' rows='30'></textarea>
    <p><input id='listOfNumbersButton' type='button' value="Submit" onclick='showMe(listOfNumbersId)'></p>
    <p><input type="submit" value="Submit">
</form>
<script>
    var arrayOfLines = [];
    function showMe(message) {
        alert(message.value);
    }
    function convertArray(text) {
        arrayOfLines = text.value.replace(/\r\n/g,"\n").split('\n');
        alert(arrayOfLines);
    }
</script>
</body>
</html>

сервлет:

 @PostMapping("/add")
    public ModelAndView add(HttpServletRequest request) throws Exception {
        number_parse.fillParams(new String[]{
                "RIM",
                "100",
                "XYABZWTUPL",
                "A!=B",
                "X",
                "A=1",
                "1",
                "",
                ""
        });
        HttpSession session = request.getSession();
        String[] array = (String[]) session.getAttribute("arrayOfLines");
        ArrayList<String> list = new ArrayList<>();
        for (int i = 0; i < array.length; i++) {
            list.add(number_parse.generateInsert(array[i], 10));
        }
        ModelAndView mv = new ModelAndView();
        mv.setViewName("otvet");
        mv.addObject("str", "MDAAAA");
        mv.addObject("kek", list);
        return mv;
    }
Answer 1

Сделайте в вашей форме post-запрос

<form action="add" onsubmit="convertArray(listOfNumbersId)" method="post">

Это позволит форме отравить данные на сервлет "add"

а в java-коде получаете эти данные с помощью HttpSession в специальном методе doPost

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
String [] arrayOfLines = (String[])session.getAttribute("listOfNumbersName"); 
READ ALSO
React+Typescript как правильно cделать async запрос?

React+Typescript как правильно cделать async запрос?

Хочу сделать компонент, который перед загрузкой берет данные с https://apicoinmarketcap

193
Как сделать числа слайдов с слайдере?

Как сделать числа слайдов с слайдере?

Как сделать число текущего и общего количество слайдов на slickjs? Например, 1/3 (первый из трех), 2/3 (второй из трех)

99
не работает на github pages ajax запрос post

не работает на github pages ajax запрос post

Через локальный сервер работает а через гитхаб нетВ чем может быть проблема https://kamran92

118