【问题标题】:How to print an array to an input field in jsp?如何将数组打印到jsp中的输入字段?
【发布时间】:2014-12-11 16:41:36
【问题描述】:

整数数组fibSequence 使用重定向传递到jsp 页面result,该重定向如下检索:<%String[] fibSequence = request.getParameterValues("fibSequence");%>。 但是当我将输入字段的值设置为 fibSequence 数组时,我得到了数组的内存地址,而不是存储在数组中的整数值:

[Ljava.lang.String;@678f482d

这是将数组输出到文本框的方式:

<input type="text" name="fibNum" value="<%=fibSequence%>" size="40px" style="font-size:30pt;height:60px">

我也从下面的答案中尝试过,但输出仍然相同:

<input type="text" name="fibNum" value="<%=java.util.Arrays.deepToString(fibSequence)%>" size="40px" style="font-size:30pt;height:60px">

有谁知道如何将数组的内容输出到jsp中的文本框?

我曾尝试使用 Arrays.toString 方法打印出值,但我收到错误 Arrays 无法解决:

<%=Arrays.toString(fibSequence)%>

【问题讨论】:

    标签: java javascript arrays jsp


    【解决方案1】:

    这个例子是有效的:
    web.xml

    <web-app>
      <display-name>Archetype Created Web Application</display-name>
        <filter>
            <filter-name>filter</filter-name>
            <filter-class>ru.bmstu.FirstFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>filter</filter-name>
            <url-pattern>*</url-pattern>
        </filter-mapping>
    </web-app>
    

    FirsFilter.java

    ...
        void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws IOException, ServletException {
            System.out.println("doFilter from FirstFilter");
            String[] cba = {"1", "2", "3", "5"};
            request.setAttribute("cba", cba);
            filterChain.doFilter(request, response);
        }
    ...
    

    index.jsp

    <%@ page import="java.util.Arrays" %>
    <html>
    <body>
    <h3>This is the JBoss example!</h3>
    <% String[] abc = {"1", "2", "3"};%>
    <%=Arrays.toString(abc)%>
    <% String[] cba = (String[]) request.getAttribute("cba"); %>
    <%=Arrays.toString(cba)%>
    </body>
    </html>
    

    结果是:

    This is the JBoss example!
    [1, 2, 3] [1, 2, 3, 5]
    

    【讨论】:

    • 在 web.xml 中添加过滤器声明时,尝试运行项目时出现资源未找到屏幕,有什么想法吗?
    • @BrianJ,你创建过滤器(实现 javax.servlet.filter)?
    • 好吧我实现了servlet过滤器和实现的方法,但是doFilter方法和你的不一样?见:public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {
    • @BrianJ,你可以使用 servletresponse 和 servletrequest 类似于 httpresponse 和 httprequest (httpresponse(request) extends servletresponse(request)。
    • 我尝试了上述方法,但是当重定向打开 result 页面时,打印到屏幕上的 cba 值是空白的。我将很快发布一个与此相关的问题并链接它。
    【解决方案2】:

    您将获得默认的Object.toString(),因为数组(并且数组是一个对象)不会覆盖toString()。你可以使用Arrays.toString(Object[]) 喜欢

    value="<%=java.util.Arrays.toString(fibSequence)%>"
    

    或者将 java.util.Arrays 的导入添加到您的 JSP。

    【讨论】:

    • 我尝试了上面的 scriplet 代码,但现在我得到了输出 [[I@2dd8f0aa 有什么想法吗?
    • 多维整数数组?使用Arrays.deepToString(Object[])
    • 不,它是一个像这样声明的一维数组private int[] fibSequence; 不太清楚为什么它不只打印出内存地址的值。
    • 因为这是Object.toString() 打印的内容。
    • 但是我试过这段代码,它仍然打印同样的东西而不是值,value="&lt;%=java.util.Arrays.toString(fibSequence)%&gt;"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    相关资源
    最近更新 更多