【问题标题】:Passing dynamic string in hyperlink as parameter in jsp将超链接中的动态字符串作为jsp中的参数传递
【发布时间】:2014-07-17 10:26:30
【问题描述】:

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

<% 
    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>

【问题讨论】:

  • 代码最后一行的输出是什么?你得到的超链接的html代码是什么?
  • out.print("this is string" + sb); 的输出是什么?
  • 这是 stringBrand=最佳营养&&Brand=终极营养&&Brand=muscle blaze&&

标签: java mysql jsp jakarta-ee servlets


【解决方案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);

我还建议在分配“风味”字符串值数组时进行更改以提高代码的清晰度。

【讨论】:

    【解决方案2】:

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

    除此之外,您的代码看起来不错,但我对 && 感到困惑。通常 URL 参数仅由一个 & 符号分隔。为什么需要 2 个?

    【讨论】:

    • 我试过了还是不能得到sb的值
    • 对不起。我的错。 sb 很好。无论如何,你得到什么错误?当您尝试查看页面源代码时,您会从超链接中获得什么价值?
    • 对不起,当我像 ${sb} 这样写时无法打印 sb 的值
    • 这不是评论区最合适的吗?
    • 那是空的吗?或者你有什么错误吗? out.print() 是否写入了一些值?
    猜你喜欢
    • 2020-11-11
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多