在超链接中传递动态字符串作为jsp中的参数

时间:2014-05-28 09:18:40

标签: java mysql jsp java-ee servlets

我正在尝试在jsp中传递动态字符串构建器变量我正在通过代码生成字符串。 String Builder变量有一些值,但我无法在运行时传递它。它没有得到值。 变量代码

<% 
    StringBuilder sb = new StringBuilder("");
    if (request.getAttribute("Brand") != null) {
        String Brand[] = (String[]) request.getAttribute("Brand");
        for (String brand : Brand) {
            sb.append("Brand=");
            sb.append(brand);
            sb.append("&");
        }
    }
    if (request.getAttribute("Flavour") != null) {
        String Flavour[] = (String[]) request.getAttribute("Flavour");
        for (String flavour : Flavour) {
            sb.append(flavour);
            sb.append("&");
        }
        sb.trimToSize();
        pageContext.setAttribute("sb", sb);
    }
    out.print("this is string" + sb);
%>

超级链接代码

<a href="Filter_Products?${sb}page=${currentPage + 1}" style="color: white;text-decoration: none;">Next</a></td>

2 个答案:

答案 0 :(得分:1)

您需要将sb添加到pageContext,请求,会话或上下文范围,以便能够通过EL表达式访问它 - 它不会获取仅在scriptlet中声明的变量。修改如下,以便sb 始终 放入pageContext:

if (request.getAttribute("Flavour") != null) {
        String[] flavours = (String[]) request.getAttribute("Flavour");
        for (String flavour : flavours) {
            sb.append(flavour);
            sb.append("&");
        }
        sb.trimToSize();

    }
    pageContext.setAttribute("sb", sb);

我还建议进行一项更改,以便在分配&#39; flavor&#39;数组时更改代码的清晰度。字符串值。

答案 1 :(得分:-1)

您正在将值设置为pageContext并尝试通过$ {}进行访问。默认情况下,这是指请求范围。试试$ {pageScope.sb}

除此之外你的代码看起来很好,但我和&amp;&amp ;.混淆了。通常,URL参数仅由一个&amp;分隔。符号。你为什么需要2?