循环遍历JSP中的响应变量

时间:2013-08-08 10:18:01

标签: java jsp java-ee servlets

我正在编写一个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循环和可能的通配符来更简单的方法。有人有什么想法吗?

由于

3 个答案:

答案 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));
}
相关问题