Reputation: 887
I need to include different JSP pages whose name is contained in a variable:
String pagename = myObject.getPage();
%><jsp:include page="<%=pagename%>" flush="true"></jsp:include><%
But this syntax is not allowed. How can I achieve the same result without use a switch-case?
Upvotes: 1
Views: 1711
Reputation: 1575
Expression language is good practice.However to use Expression language and access objects and member variables they should be available in the scopes like application , request, page etc.
if you have your page details as parameter in request object and its unique.
<jsp:include page ="{param.pagename}"></jsp:include>
will suffice, where pagename is the request parameter name.
however if you have your page details set as attributes in request or session or application use requestScope.pagename
or sessionScope.pagename
or applicationScope.pagename
to access the page info.
Upvotes: 0
Reputation: 459
Try using a JSP Expression Language (EL)
as ${pagename}
instead of <%=pagename%>
<jsp:include page="${pagename}" flush="true"></jsp:include>
Upvotes: 4
Reputation: 1256
You could use a RequestDispatcher directly.
<%
RequestDispatcher rd = request.getRequestDispatcher(pagename);
rd.include(request, response);
%>
Upvotes: 0