0

練習プロジェクトに問題があります。多分私は盲目ですが、なぞなぞを解くことができません。うまくいけば、これは単なる別の複製ではありません。

  • 1. jsp内に、オブジェクトを抽象的な方法で表示するためのリストがあります。そこから、それぞれを。でサーブレットにリンクします<a href>

           <c:forEach var="object" items="${dealer.objectList}" varStatus="status">
                  <div class="changableElement">
                            <jsp:include page="/Object/objectDetails.jsp"></jsp:include>
                            <a href="/MyProjekt/ObjectResolverServlet/${object.id}" id="send">Change</a>
                  </div>
           </c:forEach>
    

    これは正常に機能します。

  • 2.ObjectResolverServletはオブジェクトをバックグラウンドから再度取得し、属性としてリクエストに配置します。

     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws      ServletException, IOException {
           System.out.println("Mark #1");
           String objectId = request.getPathInfo().substring(1);
           MyObject obj = dbHandler.getMyObjectById(objectId );
           System.out.println(obj);
           request.setAttribute("objectDetails", obj);
           response.setContentType("text/html");        
           getServletContext().getRequestDispatcher("/MyObjectChangePage").forward(request, response) ;
    }
    

    ユーザーMyObjectChangePageはの詳細を操作することができobjます。

  • 3.MyObjectChangePage主に、別のサーブレットに転送するフォーム、テキストフィールド、および送信ボタンで構成されます。

    <form id="object_change_values_form" action="ObjectChangeServlet" method="post" >
        <div>
            <label for="name">Name:</label><br> 
            <input id="name" name="name" type="text" value="${obj.name}" />
            <span id="nameDetails"bla bla ..</span>
        </div>
    
        <div>
            <label for="origin"Origin:</label><br>
            <input id="origin" name="origin" type="text" value="${obj.origin}" />
            <span id="originDetails">bla bla ../span>
        </div>
    
        <div>
            <label for="year">Bitte Jahrgang eingeben!</label><br>
            <input id="year" name="year" type="text" value="${obj.year}" />
            <span id="yearDetails">bla bla ..</span>
        </div>
    
        <div>
            <label for="description">Description</label><br>
            <textarea name='description' id='description'>${obj.description}</textarea>
            <span id="descriptionDetails">bla bla ..</span>
        </div>
    
        <div>
            <label for="priceSelling">Price</label><br>
            <input id="priceSelling" name="priceSelling" type="text" value="${obj.priceSelling}" />
            <span id="priceSellingDetails">bla bla ..</span>
        </div>
    
        <input id="send" type="submit" value="Change" name = "button"/>                     
        <input id="send" type="submit" value="Cancel" name = "button"/>
    </form>
    

  • 4.が呼び出されることはありません。代わりに、新しい行ObjectChangeServletからの出力マーク#1が出力されます。'ObjectResolverServlet'からメソッドが呼び出されることがわかりました。私は奇妙な間違いをしたと思います。ObjectResolverServletnulldoPost

    私のweb.xmlここの一部:

      ....
      <servlet>
        <servlet-name>ObjectChangeServlet</servlet-name>
        <servlet-class>impl.servlets.ObjectChangeServlet</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>ObjectChangeServlet</servlet-name>
        <url-pattern>/ObjectChangeServlet</url-pattern>
      </servlet-mapping>
    
      <servlet>
        <servlet-name>ObjectChangePage</servlet-name>
        <jsp-file>/Object/object_change_values.jsp</jsp-file>
      </servlet>
      <servlet-mapping>
        <servlet-name>ObjectChangePage</servlet-name>
        <url-pattern>/ObjectChangePage</url-pattern>
      </servlet-mapping>
    
      <servlet>
        <description>Gets the object by id</description>
        <servlet-name>ObjectResolverServlet</servlet-name>
        <servlet-class>impl.servlets.ObjectResolverServlet</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>ObjectResolverServlet</servlet-name>
        <url-pattern>/ObjectResolverServlet/*</url-pattern>
      </servlet-mapping>
      ....
    

  • 4

    1 に答える 1

    1

    上記のコメントの良い手がかりのおかげで解決策を見つけました。タグ内のアクションが<form .. >絶対的な方法で処理サーブレットを指している必要があるというだけなので、3。での最初の試みは絶対に間違っていました

    間違い <form id="object_change_values_form" action="ObjectChangeServlet" method="post" >

    しかし、正しい解決策は
    <form id="object_change_values_form" action="/MyProjekt/ObjectChangeServlet" method="post" >

    于 2012-05-14T13:42:54.507 に答える