gpt4 book ai didi

jsp - 如何制作使用其他 JSP 标记的自定义 JSP 标记?

转载 作者:行者123 更新时间:2023-12-04 01:45:16 26 4
gpt4 key购买 nike

我想编写一个自定义 JSP 标签,其输出包括其他 JSP 标签,这些标签本身也应该被动态评估。但显然我的一切TagSupport子类写入 pageContext.getOut()无需任何进一步评估,直接与客户联系。

我觉得这应该很简单,因为这似乎是人们想要使用自定义标签的第一件事:封装和重用其他自定义标签,避免代码重复。

如何让以下代码做它显然想要做的事情?:

public class MyTag extends TagSupport {
public int doStartTag() throws JspException {
try {
pageContext.getOut().println(
"The output from this tag includes other tags " +
"like <mypackage:myOtherTag>this one</mypackage:myOtherTag> " +
"which should themselves be evaluated and rendered."
)
} catch (IOException e) {
throw new JspException(e);
}
return SKIP_BODY;
}
}

编辑:关于我的特定用例的一些背景,如果有帮助的话。我有一个自定义标签 <user>它以对我的应用程序有用的方式动态呈现用户名(将鼠标悬停在名字、姓氏、电话号码等上)。我现在正在写另一个标签 <comment>用于显示用户评论,我想使用我现有的 <user>用于在 <comment> 的输出中呈现用户名的标记标签。

最佳答案

您可以将类拆分为标签类和 tagRenderer类(class)。

在您的情况下,将有两个名为 CommentTagRenderer 的新类。和 UserTagRenderer .

这是新 CommentTag 的示例

public int doStartTag() throws JspException {
JspWriter out = pageContext.getOut();
Comment comment = getComment();
User user = getUser();

CommentTagRenderer commentRenderer = new CommentTagRenderer(out);
UserTagRenderer userRenderer = new UserTagRenderer(out);

try {
commentRenderer.renderComment(comment);
userRenderer.renderUser(user);
} catch (IOException e) {
//some error handling
}
return SKIP_BODY;
}

这是 CommentTagRenderer 的示例
private Writer out;
public CommentTagRenderer(Writer out) {
this.out = out;
}

public void renderComment(Comment comment) throws IOException {
out.write("<div>");
out.write(comment.getComment());
out.write("</div>");
}

关于jsp - 如何制作使用其他 JSP 标记的自定义 JSP 标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7971617/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com