2017-08-29 5 views
0

ドロップダウンリストを表示しようとしているJSPページがありますが、例外が表示されています。ドロップダウンリストが春に表示されないjspを持つMVC

ExpenseController.java

@Controller 
public class ExpenseController { 
    final static Logger logger = Logger.getLogger(LoginController.class); 

    @Autowired 
    private ExpenseService expenseService; 

    @Autowired 
    private CategoryDao categoryDao; 

    @RequestMapping(value = "/addDetails", method = RequestMethod.GET) 
    public String getExpenseEntryPage(Model model) { 
     ExpenseCreationBean expenseCreationBean = new ExpenseCreationBean(); 
     model.addAttribute("expenseCreationBean", expenseCreationBean); 
     return "addDetails"; 
    } 

    @RequestMapping(value = "savedata", method = RequestMethod.POST) 
    public String addExpense(@ModelAttribute("expenseCreationBean") ExpenseCreationBean expenseCreationBean, Model model) { 
     expenseService.createExpense(expenseCreationBean); 
     return "expenseAdded"; 
    } 

    @PostConstruct 
    public void init(){ 
     logger.debug("ExpenseController Bean has been Initialised."); 
    } 

    @PreDestroy 
    public void destroy(){ 
     logger.debug("ExpenseController Bean has been Destroyed."); 
    } 

    @ModelAttribute("categoryList") 
     public Map<String, String> getCategoryList() 
     { 
      Map<String, String> categoryList = new HashMap<String, String>(); 
      categoryList.put("US", "United States"); 
      categoryList.put("CH", "China"); 
      categoryList.put("SG", "Singapore"); 
      categoryList.put("MY", "Malaysia"); 
      return categoryList; 
     } 
} 

addDetails.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%> 
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
<html> 
<head> 
<title>Add Details</title> 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
<link rel="stylesheet" 
    href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> 
<script src="https://code.jquery.com/jquery-1.12.4.js"></script> 
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> 
<script> 
    $(function() { 
     $("#datepicker").datepicker({ 
      showOn : "button", 
      buttonImage : "images/calendar.png", 
      buttonImageOnly : true, 
      buttonText : "Select date" 
     }); 
    }); 
</script> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
</head> 
<body> 
    <h1>Expense Entry Details</h1> 
    <form:form id="addExpense" modelAttribute="expenseCreationBean" 
     action="savedata" method="post"> 
     <table border="6px" cellspacing="10px" cellpadding="10px"> 
      <tr> 
       <td>Date Of Purchase: <input type="text" id="datepicker" 
        name="date_of_purchase"></td> 
       <td>Item Name:<input type="text" name="description"></td> 
       <%-- <td>Category: <form:select path="category"> 
         <form:option value="NONE" label="--- Select ---" /> 
         <form:options items="${expenseCreationBean.category}" /> 
        </form:select> 
       </td> --%> 
       <td><form:label path="country">Country</form:label></td> 
       <td><form:select path="country"> 
         <form:option value="NONE" label="Select" /> 
         <form:options items="${categoryList}" /> 
        </form:select></td> 
       <td>Paid By: <select name="paid_by"></td> 
       <td>Amount Paid:<input type="text" name="total_price" 
        id="total_price"></td> 
       <td>Quantity:<input type="text" name="quantity_purchased"></td> 
       <td>Unit:<input type="text" name="unit"></td> 
      </tr> 
      <tr> 
      <tr> 
      <tr> 
      <tr> 
       <td>Exclude:</td> 
       <td><input TYPE="checkbox" name="exclude"> 
      </tr> 
      <tr> 
       <td>Comments:<textarea rows="3" cols="25" name="comments"></textarea> 
       </td> 
      </tr> 
      <tr> 
       &emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp; 
       <td><input type="submit" value="Save" align="middle"></td> 
     </table> 
    </form:form> 
</body> 
</html> 

ExpenseCreationBean.java

public class ExpenseCreationBean { 
    private User amountPaidBy; 
    private double amountPaid; 
    private Category category; 
    private Unit unit; 
    private double totalAmt; 
    private Date dateOfPurchase; 
    private String itemName; 
    private Set<User> excludedUsers; 
    private String comments; 
    private double quantityPurchased; 
} 

例外: -

org.apache.jasper.JasperException: An exception occurred processing JSP page [/WEB-INF/addDetails.jsp] at line [43] 

40:     <td><form:label path="category">Category</form:label></td> 
41:     <td><form:select path="category"> 
42:       <form:option value="NONE" label="Select" /> 
43:       <form:options items="${categoryList}" /> 
44:      </form:select></td> 
45:     <td>Paid By: <select name="paid_by"></td> 
46:     <td>Amount Paid:<input type="text" name="total_price" 

javax.servlet.jsp.JspException: Type [java.lang.String] is not valid for option items 
    org.springframework.web.servlet.tags.form.OptionWriter.writeOptions(OptionWriter.java:143) 
    org.springframework.web.servlet.tags.form.OptionsTag.writeTagContent(OptionsTag.java:157) 
    org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:84) 

私はURLに行くとき、私は以下の例外を取得しています -/addDetails。誰かが私が物事を間違ってやっていることを教えてもらえますか?

答えて

0

カテゴリはuserDefinedクラスであり、Categoryからデータを取得する際にJSTLはデータを取得できません。

+0

Stringに変更しても問題は解決しません。 –

+0

jstlを使用してマップからデータを取得してみてください。また、javaからjspに値を渡してください。 –

関連する問題