0
私の練習プロジェクトに問題があります。たぶん私は盲目ですが、私は謎を解決することはできません。うまくいけば、これはちょうど別の重複ではありません。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>
これは問題なく動作します。
ObjectResolverServlet
は、バックグラウンドからオブジェクトを再度取得し、それを属性として要求に入れます。 MyObjectChangePage
で 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) ;
}
ユーザがobj
の詳細を操作することが可能です。
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>
ObjectChangeServlet
呼び出されることはありません - 代わりにObjectResolverServlet
から、新たなラインnull
で出力マーク#1が印刷されます。 「ObjectResolverServlet」からdoPost
メソッドが呼び出されました。私はうんざりなミスを犯したと思います。ここに私の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>
....
JSPレンダリングは、それがあなたの考えであると考えていますか?あなたがFirebug/etcの要求を見るとき。 POSTされるURLは何ですか?フォームの 'action'属性を絶対的にするだけでよいでしょう。 –
@Dave Newtonフォーム要素をチェックすると、正しいアクションが表記されています。 '
他の何かが間違っています - POSTリクエスト自体をチェックしてください。残りのコード/設定を見ることはできません。展開されているものがあなたの考えであることを確認することはできません。サーブレットあなたはあなたがあなたと思っていると思っていると思っています。 –