嵌入/嵌套自定义JSP标记以设置另一个HTML标记的属性值

问题描述 投票:0回答:2

我是Java和strut的新手,我正在一个项目中,我需要从一个自定义标记中设置属性的值,该标记检索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";

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

我想用porletportlet.myFirstValue设置portlet.mySecondValue属性,但我无法动态设置它...

我需要逃避某些事情吗,还是根本不可能?否则有人有建议或替代解决方案吗?

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

谢谢

java jsp websphere struts
2个回答
1
投票

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

在XML中是相同的-您不能将标签用作另一个标签的属性值。

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


0
投票

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

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

我使用“写”自定义标记(业务需求)使用java类属性的值设置了中间变量:

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

然后只需使用$ {myVar}使用此新变量来设置我的JSP标记的属性:

<cust:urlGeneration porlet="${varTgtValue}">
  <a href="<% wsp.write(out) %>"/>the link</a>
<cust:urlGeneration/>
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.