【问题标题】:Embed/nest custom JSP tag to set the attribute value of another HTML tag嵌入/嵌套自定义 JSP 标记以设置另一个 HTML 标记的属性值
【发布时间】:2019-10-17 09:51:52
【问题描述】:

我是 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";

但是不行,portlet属性设置不正确(标签字符串没有被解释)。

我希望使用portlet.myFirstValueportlet.mySecondValue 设置porlet 属性,但我无法动态设置它...

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

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

谢谢

【问题讨论】:

    标签: java jsp websphere struts


    【解决方案1】:

    你不能这样嵌套标签;它需要递归标签处理。

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

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

    【讨论】:

    • 感谢您的回答。这适用于 JSTL 吗?就像这样: 然后使用 "${tgtPortletBis}" 设置我的标签属性?
    • @LostReality 应该,但是使用标签来检索这个值对我来说仍然很奇怪。
    • 标签来自自定义客户组件库,因此我们必须使用它。如果可行,我将测试解决方案并标记为已解决。谢谢你的知识
    【解决方案2】:

    如果它可以帮助任何人,我找到了使用 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/>
    

    【讨论】:

      猜你喜欢
      • 2012-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-25
      • 2010-09-06
      相关资源
      最近更新 更多