1

私はSpringが初めてです。MVCアーキテクチャに従って、spring-3.1を使用して「BookWorkshop」という名前のアプリケーションを作成しましたが、ヒットするとすぐに url:http://localhost:8087/BookWorkshop 次のようなエラーが発生します。

org.springframework.beans.TypeMismatchException: タイプ 'java.lang.String' のプロパティ値をプロパティ 'commandClass' の必要なタイプ 'java.lang.Class' に変換できませんでした。

私はここに私のコードを添付しています::

Spring サーブレット クラス:bookdispatcher-servlet.xml

  <?xml version="1.0" encoding="UTF-8"?>
  <beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:p="http://www.springframework.org/schema/p"
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
   http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xs">

  <bean name="/welcome_book.html" class="com.edifixio.controller.UserBookController"/>

  <bean name="/new_book.html" class="com.edifixio.controller.StoreBookController">
      <property name="commandClass" value="com.edifixio.model.UserBook"/>
      <property name="formView" value="addnewbook"/>
      <property name="successView" value="/welcome_book.html"/>
 </bean>

 <bean id="viewResolver"  class="org.springframework.web.servlet.view.InternalResourceViewResolver"
       p:viewClass="org.springframework.web.servlet.view.JstlView"         
       p:prefix="/WEB-INF/pages/"
       p:suffix=".jsp"/>  
</beans>

フォーム コントローラ クラス:::StoreBookController.java は次のとおりです。

public class StoreBookController extends SimpleFormController {

   @Override
   protected Object formBackingObject(HttpServletRequest request) throws Exception {
     UserBook book = new UserBook(0,"Enter Book Name", null, 0);
     return book;
   }

    @Override
    protected Map referenceData(HttpServletRequest request) throws Exception {
      Map<Object, Object> dataMap = new HashMap<Object, Object>();
      PublisherManager manager = new PublisherManager();
      dataMap.put("publishierList", manager.getPublishierList());
      return dataMap;
   }

   @Override
  protected void initBinder(HttpServletRequest request, ServletRequestDataBinder  dataBinder) throws Exception {
    dataBinder.setDisallowedFields(new String[]{"publishier"});
    UserBook userBook = (UserBook) dataBinder.getTarget();
    PublisherManager manager = new PublisherManager();
    Long publishierid = null;
    try {
        publishierid = Long.parseLong(request.getParameter("publishier"));
    } catch (Exception e) {
    }
    if (publishierid != null) {
        userBook.setPublisher(manager.getPublishierById(publishierid));
    }
  }

   @Override
   public ModelAndView onSubmit(Object command) throws ServletException {
     BookManager bookManager = new BookManager();
     bookManager.createBook((UserBook) command);
     return new ModelAndView(new RedirectView(getSuccessView()));
    }
 }

次に、次のように、 ::: addnewbook.jspという名前のformViewページ---

      <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
      <%@taglib prefix="sp" uri="http://www.springframework.org/tags/form"%>
      <%@page contentType="text/html" pageEncoding="UTF-8"%>
       <!DOCTYPE html>
   <html>
     <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
       <title>JSP Page</title>
     </head>
   <body>
      <h1>ADD BOOK</h1>
      <sp:form method="post">
           Publisher:<sp:select path="publisher"> 
               <sp:options items="${publisherList}" itemLabel="publishername" itemValue="publisherid"/>
          </sp:select>
           <br/><br/>
          Book Name:<sp:input path="bookname"/>
           <br/><br/>
          Price:<sp:input path="price"/>
           <br/><br/>
          <input type="submit" value="SAVE"/>
       </sp:form>
   </body>
</html>

最後に、次のように UserBookController.java という名前の successView コントローラー クラス

public class UserBookController implements Controller {

  @Override
  public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse   response) throws Exception {
     BookManager manager = new BookManager();
     ModelAndView modelAndView = new ModelAndView("booklist");
     modelAndView.addObject("allbook", manager.createBookCollection());
     return modelAndView;
    }
}

次のようなbooklist.jspという名前の successViewページ:::

  <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  <%@page contentType="text/html" pageEncoding="UTF-8"%>
  <!DOCTYPE html>
 <html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
       <title>JSP Page</title>
   </head>
  <body>
      <h1>BOOK  WORKSHOP  APPLICATION</h1>
           <table style="border:2;color:graytext" >
           <th style="color: background;alignment-adjust: baseline">Book Name</th>
           <th style="color: background">Price</th>
           <th style="color: background">Publisher</th>
           <c:forEach items="${allbook}" var="b">
              <tr>
                  <td style="color:burlywood">${b.bookname}</td> 
                  <td style="color:burlywood">${b.price}</td>
                  <td style="color:burlywood">${b.publisher.publishername}</td>
              </tr>
           </c:forEach>
      </table>
    </body>
  </html>

最後にweb.xmlファイルがここにあります:::::::

  <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee    /web-app_3_0.xsd">

    <welcome-file-list>
       <welcome-file>/new_book.html</welcome-file>
   </welcome-file-list>
  <servlet>
      <servlet-name>bookdispatcher</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
      <servlet-name>bookdispatcher</servlet-name>
      <url-pattern>*.html</url-pattern>
  </servlet-mapping>
   <session-config>
      <session-timeout>
        30
      </session-timeout>
   </session-config>
   </web-app>

誰でもこれに解決策を与えることができますか?????????????

4

2 に答える 2

1

これを試して:

<property name="commandClass">  
            <value>  
                com.edifixio.model.UserBook 
            </value>  
</property> 
于 2013-09-25T07:32:36.243 に答える
0

ここから完全に機能するSpring MVCフォームベースの例をダウンロードできます。その後、その例を好きなように変更できます。

于 2013-09-25T13:28:29.783 に答える