我正在尝试在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>
答案 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?