Использование jsp:include для передачи массива с одной страницы jsp на другую

#java #spring #jsp #spring-mvc #servlets

#java #spring #jsp #spring-mvc #сервлеты

Вопрос:

В моем приложении spring для каждого класса сущностей у меня есть набор представлений, которые имеют общую структуру. общая структура хранится в отдельном файле jsp, размещенном в /WEB-INF/jsp /common. конкретная страница jsp хранится в /WEB-INF /jsp / private / и прямо сейчас содержит это содержимое:

 <jsp:include page="../../common/listagem.jsp">
    <jsp:param name="entity" value="<Entity_name>"/>
</jsp:include>
  

Помимо параметра entity , мне нужно передать на общую страницу jsp массив с атрибутами объекта. Я использовал что-то вроде этого:

 <jsp:param name="elements" value="login"/>
<jsp:param name="elements" value="pnome"/>
<jsp:param name="elements" value="unome"/>
<jsp:param name="elements" value="email"/>
  

но я хотел что-то вроде этого:

 <jsp:param name="elements" value="login,pnome,unome,email"/>
  

Кроме того, в суперклассе для моих классов сущностей у меня есть этот метод:

 public List<String> getListaArgumentos() {
    List<String> lista = new ArrayList<String>();

    int counter = 0;
    String nome = this.getArgumentName(counter);
    do {
        lista.add(nome);
        nome = this.getArgumentName(  counter);
    }while(nome != null);

    return lista;
}
  

которые возвращают список имен атрибутов. Если я передам из своего конструктора этот список в свое представление, есть ли способ использовать это для замены "login,pnome,unome,email" ?

Ответ №1:

Добавьте это новое значение в ModelAndView в вашем контроллере

            ModelAndView mav = new ModelAndView("your view");
           mav.addObject("arguments",getListaArgumentos());
  

Затем вы можете передать представление в общий, как это, прежде чем включить

         <c:set var="arguments" value="${arguments}" scope="request"/>

        <jsp:include page="../../common/listagem.jsp">
  

Кстати, никогда не используйте свой собственный язык для кодирования, помните, что самое большое сообщество разработчиков — это англоязычные.