这是将字符串转换为列表的正确方法吗?
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;
}
}
Run Code Online (Sandbox Code Playgroud)
接下来是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);
}
}
Run Code Online (Sandbox Code Playgroud)
最后是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>
Run Code Online (Sandbox Code Playgroud)
谢谢
List<String> list = Arrays.asList(yourString);
Run Code Online (Sandbox Code Playgroud)
请记住,您将无法更改列表的内容.如果您需要这样做,请手动创建另一个列表.
使用您提供的附加servlet/JSP上下文,似乎您的代码中的真正错误是request.getParameter在JSP页面中使用:该方法确实返回一个String,并且您无法转换为Stringa List,而不是使用强制转换,而不是即使语言或数据结构允许的任何其他操作.你可以插入一个String成一个List,使用已经建议的方法之一(或改造一List成String使用其他方法),但,这不是你所需要的编码判断.
在servlet代码中,将styles 属性设置为List包含啤酒品牌的属性.所以,为了得到它List,你需要调用request.getAttribute而不是getParameter.这些getAttribute方法返回一个Object,它确实是一个List,你知道因为你已经将它设置为这样,所以在这种情况下,强制转换就是用原始类型取回值所需的操作.在代码中,这意味着
List styles = (List) request.getAttribute("styles");
Run Code Online (Sandbox Code Playgroud)
在您的JSP中,代替那些让您烦恼的行.