当前位置: 首页 > 知识库问答 >
问题:

使用jstl从子自定义标记访问父自定义标记属性结果

上官季
2023-03-14
<test test1="" test2="" test3="">
  <result1>result of the test1 condition</result1>
  <result2>result of the test2 condition</result2>
  <result3>result of the test3 condition</result3>
</test>

因此,我想访问子标记result1、result2、result3中父标记属性test1、test2、test3(这些属性的返回值为true/false)的结果,以根据返回的条件值显示输出,不管它是true还是false。

谢谢,开发者。

共有1个答案

葛霄
2023-03-14

我在研究一个类似的问题时遇到了这个问题。为了子孙后代,这里是我在野外看到的。我假设您的标记在您的标记库描述符文件中被正确定义。

父标记类

public class TestTag extends BodyTagSupport {

    // Attributes
    private String test1;
    private String test2;
    private String test3;

    // Setters
    public void setTest1(String str) {
        this.test1 = str;
    }
    // Et Cetera

    // Accessors
    public String getTest1() {
        return this.test1;
    }
    // Et Cetera

    @Override
    public int doStartTag() {
        // Do whatever is necessary here to set values for your attributes
    }

    // Process body
}

由于doStartTag是在我们开始处理标记内的主体之前调用的,因此我们知道可以安全地访问子标记中我们关心的属性。

public class Result1Tag extends TagSupport {

    // Take care of declaring and setting attributes if necessary

    @Override
    public int doStartTag() throws JspException {
        //TestTag parent = (TestTag)super.getParent(); Not recommended
        TestTag parent = (TestTag)TagSupport.findAncestorWithClass(this, TestTag.class);

        if (parent == null) {
            throw new JspTagException("Result1Tag must be enclosed in a TestTag");
        }

        String test1 = parent.getTest1();

        // Whatever logic you need for this attribute to generate content
    }
}
<test test1="foo" test2="bar" test3="foobar">
    <c:if test="${ condition }">
        <result1/>
    </c:if>
    <result2/>
    <result3/>
</test>
    null
 类似资料:
  • 我在这里做错了什么: 我一直在 但这很好: 显然我想避免 没有也不行,我的jstl不知道

  • 问题内容: 我正在尝试创建一种类似于英语的小型语言来指定任务。基本思想是将陈述分为动词和名词短语,这些动词应适用于它们。我正在使用nltk,但未获得我希望的结果,例如: 在每种情况下,它都未能意识到第一个单词(选择,移动和复制)被用作动词。我知道我可以创建自定义标签和语法来解决此问题,但是与此同时,当很多此类东西不在我的支持范围内时,我犹豫要重新发明轮子。我特别希望可以同时处理非英语语言的解决方案

  • 我正在使用React视图上的Highcharts。出于可访问性和搜索引擎优化的原因,我想定制标记,但我在文档中找不出如何实现。Highcharts会自动插入一个标记,如下所示: <代码> 有没有办法改变这一点,或者这是硬编码的?

  • 问题内容: 我想在我的登录表单中添加一些iOS特定的标签属性。如果我查看网页源代码,则不存在自动更正,自动大写和拼写检查这些属性。这是什么原因呢?我正在使用JSF2.x。 问题答案: 这是设计使然。您只能指定JSF组件本身支持的属性(即,它在标签文档的属性列表中列出)。您不能指定任意其他属性,所有这些属性都会被忽略。 有几种解决方法: 如果您已经在使用JSF 2.2+,只需将其指定为passthr

  • 定义和使用自定义标记可以吗?(这不会与将来的html标记冲突)-通过更改outerHTML替换/呈现这些标记?? 我在下面创建了一个演示,看起来效果不错 问题的最新情况: 让我进一步解释一下。请假设浏览器上启用了JavaScript-也就是说,应用程序不应该在没有javascript的情况下运行。 我见过使用自定义属性在指定标记中定义自定义行为的库。例如,角度。js大量使用自定义属性。(它还有关于