Значение элемента, созданного в JS, требуется в Spring MVC controller - PullRequest
0 голосов
/ 25 сентября 2018

Я создал тег ввода внутри javascript, и я также предоставляю ему атрибут name,

var tdTotalEmployees = row.insertCell(k++);
    tdTotalEmployees.innerHTML = rowData.totEmployees !== null ? '<a href="../emp_list_sm/employee_details?ym=' + rowData.yyyymm + '&s=' + false + '&h=' + true + '" style="color: #0e90d2; text-align:center"  target="_blank"><h4>' + rowData.totEmployees + '</h4></a><input type="hidden" name="migrationRef" value=' + rowData.migrationReference + '>' : ' ------ ';

Теперь, как обычно, мне нужно это значение переменной в моем контроллере, я использовал @RequestParam("migrationRef")String migrationRef это не сработало,

Я использовал SOUT на request.getParameter("migrationRef"), отображается ноль.означает отсутствие значения от, но когда я проверяю элемент, я ясно вижу значение этого элемента

 @RequestMapping(value = "/employee_details")
    private ModelAndView getEmployeeList(HttpServletRequest request) {
        ModelAndView mav = new ModelAndView("migrate_salary_hr/pre_migration_emp_list");
        HttpSession session = request.getSession();
        Userdetail loginUser = (Userdetail) session.getAttribute("loginUser");
        System.out.println("migration ref no" +request.getParameter("migrationRef") );
        try {

            mav.addObject("yearMonth", request.getParameter("ym"));
            mav.addObject("status", request.getParameter("s"));
            mav.addObject("historyList", request.getParameter("h"));

            if (loginUser.getEmployee().getRegion().getRegionId() != null && loginUser.getEmployee().getCircle() != null) {
                mav.addObject("Region", loginUser.getEmployee().getRegion().getRegionId());
                mav.addObject("circle", loginUser.getEmployee().getCircle().getCircleId());
            } else {
                mav.addObject("Region", loginUser.getEmployee().getRegion().getRegionId());
            }
            mav.addObject("orderBy", OrderByMap.PREMIGRATIONEMPLIST_ORDERBY);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return mav;

    }

, пожалуйста, предложите мне лучшее решение.

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Я думаю, что обходным путем будет создание формы элемента и щелчок якоря запуска формы отправки.Это позволит вам разместить всю информацию.

<form action="/{you-url}">
        <a id="go" href="#" target="_blank"/>click here</a>
        <input type="hidden" name= "ym" value = "+rowData.yyyymm+"/>
        <input type="hidden" name="s" value="false"/>
        <input type="hidden" name="h" value = "true"/>
        <input type="hidden" name="migrationRef" value=' + rowData.migrationReference + '/>
        <input type="submit"style="display:none"/>
        <script>
            document.querySelector("#go").onclick = function(){document.querySelector("input[type='submit']").click()};
        </script>
    </form>
0 голосов
/ 25 сентября 2018

Значение скрытого ввода migrationRef не отправляется на сервер при одном щелчке по ссылке.Вот почему вы не видите его на стороне сервера.

Я вижу два способа решения этой проблемы:

  1. Либо добавить параметр migrationRef в атрибут href вашей ссылки и удалите бесполезные <input type="hidden" ...

  2. или , если вы действительно не хотите видеть параметр migrationRef в URL, вы должны разместить его, используя форму.В этом сценарии атрибут action формы должен быть похож на action="../emp_list_sm/employee_details?ym=...&s=...&h=...".Затем в контроллере Spring MVC вам придется использовать @ModelAttribute вместо @RequestParam в Java Bean-компоненте с атрибутом migrationRef.

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