我正在编写一个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>");
它完美无缺,但代码冗长而且无法实现。我想知道它们是否是一种在JSP中使用for循环和可能的通配符来更简单的方法。有人有什么想法吗?
由于
答案 0 :(得分:4)
为什么不将所有状态变量添加到List<String>
并将List
添加到request
属性?这样,您可以使用单个循环输出所有变量。
List<String> statusItems = new ArrayList<>();
statusItems.add(uploadStatus);
statusItems.add(readStatus);
...
request.setAttribute("statusItems", statusItems);
BTW,不鼓励在JSP中使用scriptlet。使用JSTL:
<c:forEach var="status" items="${requestScope.statusItems}">
${status} <br/>
</c:forEach>
如果您希望对状态值进行HTML转义,请在<c:out value="${status}"/>
中使用forEach
。
答案 1 :(得分:3)
使用req.getAttributeNames()
Enumeration attrs = req.getAttributeNames();
while(attrs.hasMoreElements()) {
String val = (String) req.getAttribute((String) attrs.nextElement());
System.out.println(val);
}
答案 2 :(得分:1)
当然试试这个:
for (String lAttributeName : request.getAttributeNames()){
System.out.println((String)request.getAttribute(lAttributeName));
}