Внедрить / вложить пользовательский тег JSP для установки значения атрибута другого тега HTML - PullRequest
0 голосов
/ 17 октября 2019

Я новичок в Java и Struts и работаю над проектом, в котором мне нужно установить значение атрибута из пользовательского тега, который извлекает значение свойства Java.

...
<cust:urlGeneration porlet="<cust:write property="tgtPortlet"/>">
  <a href="<% wsp.write(out) %>"/>the link</a>
<cust:urlGeneration/>
...

Этосвойство устанавливается в классе Java в зависимости от контекста. Этот код находится в моем соответствующем Java-классе:

if(isMyFirstUseCase)
  screenbean.setTgtPortlet = "portlet.myFirstValue";
else
  screenbean.setTgtPortlet = "portlet.mySecondValue";

Но он не работает, атрибут портлета задан неправильно (строка тега не интерпретируется).

Я хочу *Свойство 1009 * можно установить с помощью portlet.myFirstValue или portlet.mySecondValue, но мне не удается установить его динамически ...

Нужно ли что-то экранировать или это просто невозможно? В противном случае у кого-нибудь есть предложение или альтернативное решение?

Я могу предоставить любую дополнительную информацию, если это необходимо.

Спасибо

Ответы [ 2 ]

1 голос
/ 17 октября 2019

Вы не можете вкладывать теги таким образом;это потребовало бы рекурсивной обработки тегов.

Это то же самое в XML - вы не можете использовать тег в качестве значения свойства для другого тега.

Атрибуты должны быть установлены с использованием обычного JSP EL.

0 голосов
/ 18 октября 2019

Если это может кому-нибудь помочь, я нашел обходной путь, используя JSLT:

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>

Я установил промежуточную переменную со значением свойства моего класса java, используя мой пользовательский тег write (бизнес-требование):

<c:set var="varTgtValue"><cust:write property="tgtValue"/></c:set>

Затем просто используйте эту новую переменную, чтобы установить свойство моего тега JSP с помощью $ {myVar}:

<cust:urlGeneration porlet="${varTgtValue}">
  <a href="<% wsp.write(out) %>"/>the link</a>
<cust:urlGeneration/>
...