немного назад история:
Я работаю над файлом, который должен быть очень большим, что в итоге приводит к следующей ошибке:
The code of method _jspService(HttpServletRequest, HttpServletResponse) is exceeding the 65535 bytes limit.
Чтобы обойти это, я «модульно» использовал файл с помощью тегов jsp:include
. Я успешно передал объекты из основного файла во включаемый файл, сериализовав объекты и используя тег jsp:param
, а затем десериализовав его в файле jsp: include. Однако, как будто эти объекты используются, модифицируются, используются повторно и повторно модифицируются в основном файле и во множестве включенных файлов. мне интересно
если есть способ вернуть объект в основной файл после рендеринга включенного файла, ИЛИ если есть способ получить доступ к этим объектам по ссылке, чтобы они могли быть изменены в одном включенном файле, и правильный экземпляр измененного объекта мог бы быть повторно использованы другие включенные файлы под ним?
До сих пор я рассматривал pagecontext.setAttribute()
(который, похоже, не относится к ref и, по-видимому, не позволяет мне передавать значение обратно после изменения в основной файл) и jsp:param
(почти то же самое, что и как pagecontext.setAttribute()
).
Это то, что я имею до сих пор:
Пример кода ниже: (Надеюсь, это никого не смущает. Я не ищу синтаксических исправлений, я просто ищу решение, которое позволит ссылкам на тот же объект (например, глобальный переменная вместе с тегами include) или для передачи объекта обратно в main.jsp, чтобы следующий jsp: include мог получить к нему доступ после его изменения.
main.jsp
//Serialized Objects, Google Gson object
Gson gson = new Gson();
String serializedObject = gson.toJson( objectName );
<jsp:include page="/includes/includedFileName1.jsp">
<jsp:param name="serializedObject" value="<%= serializedObject %>" />
</jsp:include>
<!-- Is there a way to ensure includedFileName2 .jsp gets the modified version of object from includedFileName1.jsp? -->
<jsp:include page="/includes/includedFileName2.jsp">
<jsp:param name="serializedObject" value="<%= serializedObject %>" />
</jsp:include>
<!-- Is there a way to ensure includedFileName3 .jsp gets the modified version of object from includedFileName2.jsp? -->
<jsp:include page="/includes/includedFileName3.jsp">
<jsp:param name="serializedObject" value="<%= serializedObject %>" />
</jsp:include>
includedFileName1.jsp
//Gson object used to convert serialized strings to java objects
Gson gson = new Gson();
ObjectType object = null;
if (null != request.getParameter("serializedObject")) {
object = gson.fromJson(request.getParameter("serializedObject"), ObjectType.class);
}
if (x = y) {object = somethingNew1;}
//is there a way to pass object back to the main.jsp?
includedFileName2.jsp
//Gson object used to convert serialized strings to java objects
Gson gson = new Gson();
ObjectType object = null;
if (null != request.getParameter("serializedObject")) {
object = gson.fromJson(request.getParameter("serializedObject"), ObjectType.class);
}
if (x = y) {object = somethingNew2;}
//is there a way to pass object back to the main.jsp?
includedFileName3.jsp
//Gson object used to convert serialized strings to java objects
Gson gson = new Gson();
ObjectType object = null;
if (null != request.getParameter("serializedObject")) {
object = gson.fromJson(request.getParameter("serializedObject"), ObjectType.class);
}
if (x = y) {object = somethingNew3;}
//is there a way to pass object back to the main.jsp?
Объект может или не может быть изменен, но должен быть доступен из всех трех включений, а последние изменения объекта должны быть доступны.
Спасибо за ваше время.