gpt4 book ai didi

java - 使用自定义标签集合在 JSTL 中切换语句/迭代

转载 作者:行者123 更新时间:2023-12-02 07:56:43 25 4
gpt4 key购买 nike

HelloTag.Java

public class HelloTag extends SimpleTagSupport {

@Override
public void doTag() throws JspException, IOException {
JspWriter out = getJspContext().getOut();

ArrayList outerList = new ArrayList();
ArrayList innerList = null;
for (int i = 0; i < 5; i++) {
innerList = new ArrayList();
innerList.add("1");
innerList.add("Name");
outerList.add(innerList);
}
for (int i = 0; i < outerList.size(); i++) {
for (int j = 0; j < innerList.size(); j++) {
out.println(innerList.get(j));
}
}
}
}

在 JSP 文件中,有以下代码片段:

 <body>
<ct:Hello></ct:Hello>
</body>

当我运行JSP文件时,该文件显示了准确的结果;但是

我想决定来自自定义标记类的每个值

比如

 <c:set var="name" scope="" value=""/>
<c:choose>
<c:when test="${name == 1}">
This is Your ID:-
</c:when>
<c:otherwise>
This is Your Name
</c:otherwise>
</c:choose>

上面的代码只是为了举例。请更新我如何对自定义标签类中的每个值做出决定。

解释我的问题的另一种方法是,我想将每个值存储在一个变量中,然后仅使用 JSTL 来决定该值,而无需专注于上述场景的 Scriplet 标签(HelloTag.Java )

最佳答案

不太清楚你想问什么。但是您的标签实际上只是循环遍历外部列表的每个内部列表(事实上,我想它应该这样做,但它有一个错误,所以它没有)。

您不需要自定义标签来执行此操作,因为 JSTL <c:forEach>标签已经这样做了。假设您有一个outerList存储在请求(或页面,或 session ,或应用程序)属性中:

<%-- iterate through the outer list --%>
<c:forEach var="innerList" items="${outerList}">
<%-- iterate through the innerList --%>
<c:forEach var="element" items="${innerList}">
<%-- do what you want with the element --%>
</c:forEach>
</c:forEach>

从你的问题来看,在我看来你不应该有一个内部列表。相反,外部列表应该包含具有 Person 的对象(例如 getId() 类的实例)。和一个getName()方法。因此循环将是:

<%-- iterate through the outer list --%>
<c:forEach var="person" items="${personList}">
ID : ${person.id}<br/>
Name : <c:out value="${person.name}"/>
</c:forEach>

关于java - 使用自定义标签集合在 JSTL 中切换语句/迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9529991/

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