Передавать массив целых чисел от отмеченных переключателей вместо строк чисел

Область фокусировки: см. Th: value = "1"? Это передается через форму JavaScript и возвращается в контроллер как часть массива строк. Можно ли преобразовать это в int?

 <input
                                type = "radio"
                                th:name = "'userAnswer' + ${iter.index}"
                                th:value = "1"
                                th:attr = "data-question-id=${question.value}, data-question-key=${question.key}" /> 

Остальное здесь, если вам нужно больше контекста.

model.addAttribute("title", "Take The Test!");
model.addAttribute("currentMatchingTestQuestions", questions);
model.addAttribute("newList", shuffleMap);
model.addAttribute("test",currentTest);

<div th:each = "question, iter : ${newList}" name = "questions" class = "list-group">
                <h2 th:text = "${question.key}" class = "list-group-item-heading">User Display Name</h2>
                <div class = "form-group">
                    <br></br>
                    <label th:for = "desiredAnswer1">Desired Answer</label>
                    <br></br>
                    <!--maybe put div for each hidden input?-->
                    <!--iter. index is so that each name is different, so we can click one button per question.-->
                    <input
                            type = "radio"
                            th:name = "'userAnswer' + ${iter.index}"
                            th:value = "1"
                            th:attr = "data-question-id=${question.value}, data-question-key=${question.key}"

                            /> Always True
                    <!--<input type = "hidden" th:value = "${question.id}" name = "questionId" />-->
                    <input type = "hidden" th:name = "userAnswer" th:value = "1" class = "userAnswers"/>
                    <br></br>
                    <input
                            type = "radio"
                            th:name = "'userAnswer' + ${iter.index}"
                            th:value = "2"
                            th:attr = "data-question-id=${question.value}, data-question-key=${question.key}"
                    />  Mostly True
                    <!--<input type = "hidden" th:value = "${question.id}" name = "questionId" />-->
                    <input type = "hidden" th:name = "userAnswer" th:value = "2" class = "userAnswers" />
                    <br></br>
                    <input
                            type = "radio"
                            th:name = "'userAnswer' + ${iter.index}"
                            th:value = "3"
                            th:attr = "data-question-id=${question.value}, data-question-key=${question.key}"
                    />  Sometimes True Sometimes False
                    <!--<input type = "hidden" th:value = "${question.id}" name = "questionId" />-->
                    <input type = "hidden" th:name = "userAnswer" th:value = "3" class = "userAnswers"/>
                    <br></br>
                    <input
                            type = "radio"
                            th:name = "'userAnswer' + ${iter.index}"
                            th:value = "4"
                            th:attr = "data-question-id=${question.value}, data-question-key=${question.key}"
                    /> Mostly False
                    <!--<input type = "hidden" th:value = "${question.id}" name = "questionId" />-->
                    <input type = "hidden" th:name = "userAnswer" th:value = "4" class = "userAnswers"/>
                    <br></br>
                    <input
                            type = "radio"
                            th:name = "'userAnswer' + ${iter.index}"
                            th:value = "5"
                            th:attr = "data-question-id=${question.value}, data-question-key=${question.key}"
                    />  Always False
                    <!--<input type = "hidden" th:value = "${question.id}" name = "questionId" />-->
                    <input type = "hidden" th:name = "userAnswer" th:value = "5" class = "userAnswers"/>
                    <br></br>
                </div>
        </div>

function findChecked() {

    const checkedRadios = [];
    const questionIds = []; //arrays
    const questionKeys = [];
    const answerInput = document.querySelector('#allAnswers'); //why is this declared twice again?
    const questionIdInput = document.querySelector('#questionIds');//sets variable for hidden input of questionIds
    const questionKeysInput = document.querySelector('#questionKeys');
    const radios = document.querySelectorAll('input[type=radio]');// sets variable for all radio button values
    radios.forEach(radio =>{ //loops through radio values
    if (radio.checked){ // if the radio button is checked
        checkedRadios.push(radio.value); //push the value of radio button to checkedRadios array
        questionIds.push(radio.dataset.questionId);//push question.Id to questionIds array. Notice that dataset interprets...
        questionKeys.push(radio.dataset.questionKey);                                  //...question.id as questionId

        }

    });
    answerInput.value = checkedRadios; // pass array of checked radios to answerInput for the id of "allAnswers" hidden input
    questionIdInput.value = questionIds;// same as above but for id = "questionIds" hidden input
    questionKeysInput.value = questionKeys;
    console.info(checkedRadios);//debug
    console.info(questionIds);
}

Я использую форму JavaScript, чтобы получить каждый ответ пользователя и поместить его в массив. Однако прямо сейчас он может отправлять только массив строк чисел. Есть ли способ использовать JS или Thymeleaf для запроса параметра массива / списка целых чисел / целых чисел. Я использую SpringBoot для запроса параметров в контроллере как:

 public String processTakeTest(Model model, @PathVariable int testId, HttpSession session, @RequestParam(name = "allAnswers") String allAnswers[],
                              @RequestParam(name = "questionIds") String questionIds[], @RequestParam(name = "questionKeys") String questionKeys[])

Почему это помечено как [java]?

ricky3350 26.09.2018 07:23

@ ricky3350 Он помечен как Java, потому что включает Thymeleaf и Spring MVC, которые являются инструментами инфраструктуры Java.

William Toscano 26.09.2018 07:30

О, я пропустил эту часть. Извините!

ricky3350 26.09.2018 07:31
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
49
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

используйте Number () для преобразования строки в число

checkedRadios.push(Number(radio.value))

Другие вопросы по теме