我正在编写一个 JSP 页面,它从 servlet 中检索变量并将它们输出给用户,我当前的代码工作如下:
String uploadStatus = (String) request.getAttribute("uploadStatus");
String readStatus = (String) request.getAttribute("readStatus");
String saveStatus = (String) request.getAttribute("saveStatus");
String completeStatus = (String) request.getAttribute("completeStatus");
String applicationName = (String) request.getAttribute("applicationName");
String buildAndroid = (String) request.getAttribute("buildAndroid");
String buildWindows = (String) request.getAttribute("buildWindows");
String buildiOS = (String) request.getAttribute("buildiOS");
String uploadCompleteStatus = (String) request.getAttribute("uploadCompleteStatus");
String startBuild = (String) request.getAttribute("startBuild");
String finishBuild = (String) request.getAttribute("finishBuild");
out.println(uploadStatus + "<br>");
out.println(readStatus + "<br>");
out.println(saveStatus + "<br>");
out.println(applicationName + "<br>");
out.println(buildAndroid + "<br>");
out.println(buildWindows + "<br>");
out.println(buildiOS + "<br>");
out.println(uploadCompleteStatus + "<br>");
out.println(startBuild + "<br>");
out.println(finishBuild + "<br>");
它工作得很好,但是代码很长而且不是很容易扩展。我想知道他们是否是一种使用 for 循环和可能的通配符在 JSP 中更简单地执行此操作的方法。有人有什么想法吗?
谢谢
最佳答案
为什么不将所有状态变量添加到 List<String>
并添加 List
到 request
属性?这样您就可以使用单个循环来输出所有变量。
List<String> statusItems = new ArrayList<>();
statusItems.add(uploadStatus);
statusItems.add(readStatus);
...
request.setAttribute("statusItems", statusItems);
顺便说一句,不鼓励在 JSP 中使用 scriptlet。使用 JSTL :
<c:forEach var="status" items="${requestScope.statusItems}">
${status} <br/>
</c:forEach>
或使用 <c:out value="${status}"/>
在 forEach
内如果您希望对状态值进行 HTML 转义。
关于java - 在 JSP 中循环访问响应变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18123448/