#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>
Опасность для всего этого заключается в том, что если вы не укажете параметр в своем теге, он возьмет его из запроса, если он существует.