我无法弄清楚为什么我得到这个Exception到处都是看起来因为你试图将一个String转换为ItemRating但是从我在代码中看到它是对象ItemRating。错误在JSP页面中给出。
的Servlet: / * *要更改此许可证标题,请在“项目属性”中选择“许可证标题”。 *要更改此模板文件,请选择“工具”|模板 *并在编辑器中打开模板。 * / 包my.pack;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
*
* @author Lee Howon
*/
@WebServlet(name = "ProfileController", urlPatterns = {"/ProfileController"})
public class ProfileController extends HttpServlet {
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code>
* methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
UserDB users = new UserDB();
String action =request.getParameter("action");
HttpSession session = request.getSession();
itemBean item = new itemBean();
ItemRating rating = new ItemRating(item,"0","false");
UserProfile profile = new UserProfile( users.getUsers().get(0).getUserID());
collection coll = new collection();
String itemCode = request.getParameter("itemCode");
if(session.getAttribute("theUser")==null){
User user = new User();
List<User> userList = users.getUsers();
user.setUserID(userList.get(0).getUserID());
user.setFirstName(userList.get(0).getFirstName());
user.setLastName(userList.get(0).getLastName());
user.setEmail(userList.get(0).getEmail());
user.setAddr(userList.get(0).getAddr());
user.setCity(userList.get(0).getCity());
user.setState(userList.get(0).getState());
user.setPostCode(userList.get(0).getPostCode());
request.setAttribute("theUser", user);
session.setAttribute("theUser", user);
getServletContext().getRequestDispatcher("/bookmark.jsp").forward(request,response);
}
else{
if(action.equals("save"))
{
List<itemBean> songs= coll.getItems();
for(int i = 0; i < songs.size(); i++){
if(itemCode.equals(songs.get(i).getItemCode()))
{
item.setItemCode(songs.get(i).getItemCode());
item.setSong(songs.get(i).getSong());
item.setArtist(songs.get(i).getArtist());
item.setCategory(songs.get(i).getCategory());
item.setSongURL(songs.get(i).getSongURL());
item.setRating(songs.get(i).getRating());
item.setDesc(songs.get(i).getDesc());
//request.setAttribute("itemBean", item);
}
}
profile.addItem(rating);
session.setAttribute("currentProfile", rating);
getServletContext().getRequestDispatcher("/bookmark.jsp").forward(request,response);
}
else if(action.equals("updateProfile")){
String[] itemList =request.getParameterValues("itemList");
for(String list: itemList){
for(int i=0; i<itemList.length; i++){
if(!coll.getItems().get(i).getItemCode().contains(list)){
getServletContext().getRequestDispatcher("/bookmark.jsp").forward(request,response);
}
else {
request.setAttribute("theItem", rating);
getServletContext().getRequestDispatcher("/CatalogController?action=coll.getItems.get(i).getItemCode()").forward(request, response);
}
}
}
}
else if(action.equals("updateRating")){
String[] checkRating= request.getParameterValues("itemList");
String itemRating = request.getParameter("rating");
itemBean currItem = null;
for(String list: checkRating){
for(int i=0; i<coll.getItems().size(); i++){
if(list.equals(coll.getItems().get(i).getItemCode())){
currItem = coll.getItems().get(i);
if(currItem == null){
getServletContext().getRequestDispatcher("/bookmark.jsp").forward(request,response);
}
else if(itemRating.equals("")){
currItem.setRating("");
} else if(currItem.getRating().equals(itemRating)){
getServletContext().getRequestDispatcher("/bookmark.jsp").forward(request,response);
}else if(!currItem.getRating().equals(itemRating)){
currItem.setRating(itemRating);
}else{
getServletContext().getRequestDispatcher("/bookmark.jsp").forward(request,response);
}
}
}
}
session.setAttribute("currentProfile", itemRating);
getServletContext().getRequestDispatcher("/bookmark.jsp").forward(request,response);
}
else if(action.equals("updateFlag")){
}
else if(action.equals("signout")){
}
else{
//getServletContext().getRequestDispatcher("/profile.jsp)").forward(request, response);
}
}
//else{
// getServletContext().getRequestDispatcher("/profile.jsp").forward(request,response);
//}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
*
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
JSP页面:
<%--
Document : bookmark
Created on : Feb 11, 2018, 1:41:26 PM
Author : Anastasia
--%>
<%@page import="my.pack.ItemRating"%>
<%@page import="my.pack.itemBean"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%@page import="my.pack.collection" %>
<%@include file="/header.jsp"%>
<%@include file="/user-navigation.jsp"%>
<%@include file="/site-navigation.jsp"%>
<div id="productList"><form action="ProfileController" method="post">
<table>
<%
//get the user bean from the request
***error here*** ItemRating itemRating = (ItemRating) session.getAttribute("currentProfile");
collection coll = (collection) session.getAttribute("itemList");
itemBean itemBean = new itemBean();
//String string = itemRating.getItem().getSong();
%>
<tr>
<th>Song Name</th>
<th>Category</th>
<th> My Rating</th>
<th> Update</th>
</tr>
<% if(session.getAttribute("currentProfile") != null )
for(int row=1; row <=1; row++) { %>
<tr>
<td><%= itemRating.getItem().getSong() %></td>
<td><%= itemRating.getItem().getCategory() %>}</td>
<td><%= itemRating.getItem().getRating() %></td>
<td><form action="ProfileController?action=updateProfile" method="post"><button type="submit" name="RateIt">
Rate</button><button type="submit" name="Update" action="ProfileController?action=itemList">
Update</button></form></td>
</tr>
<% } %>
</table>
</form>
<form action="ProfileController?action=updateProfile" method="post">
<input type="hidden" name="itemList" value="itemCode">
<input type="text" name="OST1" value="<%= itemBean.getRating() %>">
<input type="hidden" name="itemList" value="OST2">
<input type="text" name="OST2" value="<%= itemBean.getRating() %>">
<input type="hidden" name="itemList" value="OST3">
<input type="text" name="OST3" value="<%= itemBean.getRating() %>">
<input type="hidden" name="itemList" value="S1">
<input type="text" name="S1" value="<%= itemBean.getRating() %>">
<input type="hidden" name="itemList" value="S2">
<input type="text" name="S2" value="<%= itemBean.getRating() %>">
<input type="hidden" name="itemList" value="S3">
<input type="text" name="S3 " value="<%= itemBean.getRating() %>">
<button type="submit"> Update </button>
</form
<form action="ProfileController?action=deleteItem" method="POST">
<button type="button"> Delete </button>
</form>
</div>
<%@include file="/footer.jsp" %>
答案 0 :(得分:0)
查看代码,看起来有问题。您的流程将执行“updateRating”操作,您将保存具有字符串值的“currentProfile”命名属性。而在另一种情况下,如果您的操作是“保存”,那么您将正确的对象保存为属性值。
以下是保存所需属性对象的正确代码: 如果(action.equals( “拯救”)) {
List<itemBean> songs= coll.getItems();
for(int i = 0; i < songs.size(); i++){
if(itemCode.equals(songs.get(i).getItemCode()))
{
item.setItemCode(songs.get(i).getItemCode());
item.setSong(songs.get(i).getSong());
item.setArtist(songs.get(i).getArtist());
item.setCategory(songs.get(i).getCategory());
item.setSongURL(songs.get(i).getSongURL());
item.setRating(songs.get(i).getRating());
item.setDesc(songs.get(i).getDesc());
//request.setAttribute("itemBean", item);
}
}
profile.addItem(rating);
session.setAttribute("currentProfile", rating);
getServletContext().getRequestDispatcher("/bookmark.jsp").forward(request,response);
}
以下是将字符串值保存在导致问题的属性中的代码:
else if(action.equals("updateRating")){
String[] checkRating= request.getParameterValues("itemList");
String itemRating = request.getParameter("rating");
itemBean currItem = null;
for(String list: checkRating){
for(int i=0; i<coll.getItems().size(); i++){
if(list.equals(coll.getItems().get(i).getItemCode())){
currItem = coll.getItems().get(i);
if(currItem == null){
getServletContext().getRequestDispatcher("/bookmark.jsp").forward(request,response);
}
else if(itemRating.equals("")){
currItem.setRating("");
} else if(currItem.getRating().equals(itemRating)){
getServletContext().getRequestDispatcher("/bookmark.jsp").forward(request,response);
}else if(!currItem.getRating().equals(itemRating)){
currItem.setRating(itemRating);
}else{
getServletContext().getRequestDispatcher("/bookmark.jsp").forward(request,response);
}
}
}
}
session.setAttribute("currentProfile", itemRating);
getServletContext().getRequestDispatcher("/bookmark.jsp").forward(request,response);
}