Подтвердить что ты не робот

Как передать объект в JSP-тег?

У меня есть страница JSP, содержащая скрипт, где я создаю экземпляр объекта. Я хотел бы передать этот объект тегу JSP без использования кеша.

Например, я хотел бы выполнить следующее:

<%@ taglib prefix="wf" uri="JspCustomTag" %>

<% 
 Object myObject = new Object();
%>

<wf:my-tag obj=myObject />

Я пытаюсь избежать прямого взаимодействия с любым из кешей (страница, сеанс, servletcontext), я бы предпочел, чтобы мой дескриптор тега был.

4b9b3361

Ответ 1

Несколько другой вопрос, который я искал здесь: "Как передать объект в файл тега?"

Ответ. Используйте атрибут "type" директивы атрибута:

<%@ attribute name="field" 
              required="true"
              type="com.mycompany.MyClass" %>

Тип по умолчанию соответствует java.lang.String, поэтому без него вы получите сообщение об ошибке, если попытаетесь получить доступ к полям объекта, говорящим, что он не может найти поле из типа String.

Ответ 2

<jsp:useBean id="myObject" class="java.lang.Object" scope="page" />
<wf:my-tag obj="${myObject}" />

Не рекомендуется использовать Scriptlets на странице JSP. Он убивает цель языка шаблонов.

Ответ 4

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

<%  Object myObject = new Object();
    pageContext.setAttribute("myObject", myObject);
%>
<wf:my-tag obj="${myObject}" />

В противном случае tas получает значение null.

И <wf:my-tag obj="<%= myObject %>" /> работает без дополнительных усилий. Также <% =% > дает проверку типа времени компиляции jsp, а El проверяется только во время выполнения.

Ответ 5

Вы можете использовать "<% =% > ", чтобы получить значение объекта непосредственно в теге:

    <wf:my-tag obj="<%= myObject %>"/>

и получить значение любой переменной внутри этого объекта, вы можете получить это с помощью "obj.parameter", например:

<wf:my-tag obj="<%= myObject.variableName %>"/>

Ответ 6

Использовать язык выражения:

    <wf:my-tag obj="${myObject}" />