Embed/nest自定义JSP标签设置另一个HTML标签的属性值

Embed/nest custom JSP tag to set the attribute value of another HTML tag

我是 Java 和 struts 的新手,我正在做一个项目,我需要从自定义标签中设置属性值,该标签检索 [=32] 的值=] 属性.

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

这个属性根据上下文设置在Javaclass中。这段代码在我对应的 java class :

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

但它不起作用,portlet 属性设置不正确(标记字符串未被解释)。

我想用 portlet.myFirstValueportlet.mySecondValue 设置 porlet 属性 但我无法动态设置它...

我需要逃避什么还是根本不可能?否则有人有建议或替代解决方案吗?

如果需要,我可以提供任何其他信息。

谢谢

您不能以这种方式嵌套标签;这将需要递归标记处理。

这在 XML 中是一样的——您不能将一个标签用作另一个标签的 属性 值。

应该使用普通 JSP EL 设置属性。

如果它可以帮助任何人,我找到了使用 JSLT 的解决方法:

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

我使用 "write" 自定义标签(业务需求)设置了一个中间变量,其值为 java class 属性 :

<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/>