Java - 将字符串转换为List

时间:2011-10-22 21:46:50

标签: java jsp servlets

这是将字符串转换为列表的正确方法吗?

List styles = (List)request.getParameter("styles");

    Model (BeerExpert.java)

package com.example.model;
import java.util.*;

public class BeerExpert {
    public List getBrands(String color){
        List brands = new ArrayList();
        if(color.equals("amber")){
            brands.add("Jack Amber");
            brands.add("Red Moose");
        }
        else{
            brands.add("Jail Pale Ale");
            brands.add("Gout Scott");
        }
        return brands;
    }
}

接下来是servlet类

BeerSelect.java

package com.example.web;

import com.example.model.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class BeerSelect extends HttpServlet {
    public void doPost(HttpServletRequest request,
                       HttpServletResponse response)
                        throws IOException,ServletException{
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();

        out.println("Beer Selection Advice <br>");
        String c = request.getParameter("color");

        BeerExpert be = new BeerExpert();
        List result = be.getBrands(c);

        request.setAttribute("styles", result);
        RequestDispatcher view = request.getRequestDispatcher("results.jsp");
        view.forward(request, response);
    }
}

最后是jsp。

 results.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<%@page import="java.util.*" %>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1 align="center">Beer Recommendations in JSP!!!</h1>
        <%
            List styles = (List)request.getParameter("styles");
            Iterator it = styles.iterator();
            while(it.hasNext()){
                out.print("<br> try " + it.hasNext());
            }
        %>
    </body>
</html>

由于

4 个答案:

答案 0 :(得分:6)

List<String> list = Arrays.asList(yourString);

请记住,您将无法更改列表的内容。如果您需要这样做,请手动创建另一个列表。

答案 1 :(得分:5)

使用您提供的附加servlet / JSP上下文,代码中的真正的错误似乎是在JSP页面中使用request.getParameter:该方法确实返回{{ 1}},你不能在String转换一个String,而不是使用强制转换,甚至不能使用语言或数据结构允许的任何其他操作。您可以使用已建议的方法之一<或 a List插入String,将List插入List { {1}}使用其他方法),但从代码中判断出你不需要的东西。

在servlet代码中,您将String 属性设置为包含啤酒品牌的styles。因此,要恢复List,您需要调用List而不是request.getAttributegetParameter方法返回一个getAttribute,它实际上是Object,你知道因为你已经将它设置为这样,所以在这种情况下,一个强制转换就是这样的操作需要以原始类型返回值。在代码中,这意味着

List

在您的JSP中,代替那些让您烦恼的行。

答案 2 :(得分:1)

不是,你正在做的是尝试施放 StringList,这是不一样的。 强制转换不转换对象,它只是试图告诉对象是什么 type

您需要做的是:

List<String> list = new LinkedList<String>();
list.add(request.getParameter("styles"));

答案 3 :(得分:0)

如果您正在尝试检索更多&#34;样式&#34;你可以使用:

request.getParameterValues("styles")

将返回一个String数组,可用于创建List,如下所示:

List<String> styles = java.util.Arrays.asList(request.getParameterValues("styles"))