Есть ли способ заставить JSP включать параметры действия необязательными

#java #jsp #web #jspinclude

#java #jsp #веб #jspinclude

Вопрос:

Я использую функцию <jsp:include page=»…»> для многих своих страниц, но с одним большим недостатком, с которым я постоянно сталкиваюсь, если вы добавляете параметры на страницу для включения, кажется, что вы не можете сделать их необязательными. Поэтому, если у вас уже есть множество вариантов использования компонента jsp, и вы хотите добавить к нему параметр, вам нужно найти все места, где он включен, и добавить новый параметр.

Есть ли способ сделать так, чтобы эти параметры либо не были обязательными, либо по умолчанию имели какое-либо значение, если оно не указано в инструкции include?

Вот пример:

 <div class="container-fluid">
                    <div class="row">
                        <div class="col-sm-8 col-12 offset-sm-2 slider-text">
                            <div class="slider-text-inner text-center">
                                <h1><%=request.getParameter("h1")%></h1>
                                <h2><%=request.getParameter("h2")%></h2>
                            </div>
                        </div>
                    </div>
  </div>



  <jsp:include page="../../Components/smallHero.jsp">
         <jsp:param name="h1" value="Some Text Here"/>
        <jsp:param name="h2" value=""/>
    </jsp:include>
  

Ответ №1:

Похоже, что следующее решает вашу проблему? Мне трудно поверить, что заголовки могут быть необязательными.

 request.getParameter("h1") == null ? 'default value' : request.getParameter("h1")
  

Может быть, то, что вы действительно хотите, это

 <c:if test="${not empty param.h1}">
    <h1><c:out value="${param.h1}"/></h1>
</c:if>
  

Опасность для всего этого заключается в том, что если вы не укажете параметр в своем теге, он возьмет его из запроса, если он существует.