【问题标题】:Looping through response variables in a JSP循环访问 JSP 中的响应变量
【发布时间】:2013-08-08 10:18:01
【问题描述】:

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

谢谢

【问题讨论】:

    标签: java jsp jakarta-ee servlets


    【解决方案1】:

    为什么不将所有状态变量添加到List&lt;String&gt; 并将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>
    

    如果你希望你的状态值被 HTML 转义,或者在 forEach 中使用 &lt;c:out value="${status}"/&gt;

    【讨论】:

    • 或者只是${statusItems}
    • 没用过JSTL,是不是必须要下载的库?
    • 是的,它是一个标签库。有关 JSTL 的更多信息,请参阅此帖子:stackoverflow.com/questions/3177733/…
    【解决方案2】:

    使用req.getAttributeNames()

        Enumeration attrs =  req.getAttributeNames();
        while(attrs.hasMoreElements()) {
            String val = (String) req.getAttribute((String) attrs.nextElement());
            System.out.println(val);
        }
    

    【讨论】:

    • JSP 中的 Java 代码 - 不,不!
    • @RohitJain 此代码有效(至少有帮助)如果 OP 想在 servlet 中准备 List 并传递给 JSP。而且对 JSP 中的 java 代码也没有 :)
    【解决方案3】:

    一定要试试这个:

    for (String lAttributeName : request.getAttributeNames()){
           System.out.println((String)request.getAttribute(lAttributeName));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多