2015-04-29 249 views
1

我現在有2個servlet。我有一個左側的導航欄和右側的內容空間。我用的是如下因素JS爲了把Servlet的輸出在正確的位置getParameter始終爲空

$(document).ready(function() {       
     $('#navigation').load('Navigation'); 
     $('#content').load('Content'); 
    }); 

導航裏面,我才能得到我想要的內容空間的文章的鏈接。因此,在我的導航的每個類別名稱中,我都引用了另一個servlet。所以導航是一個servlet,而內容是一個servlet。問題是,內容不會「獲取」導航的名稱。

String category = request.getParameter("category"); 
    String suche = request.getParameter("suche"); 

我試圖讓類別名稱我點擊作爲ID,或搜索字符串我輸入,兩者不工作。一類這個樣子的導航:

out.println("<li><a><form method='get'><button type='submit' name='category' value='"+ k2.getKategorieNr() + "'>" + k2.getKName() + "</button></form></a></li>"); 

我客串的問題是,每次我點擊一個類別,全HTML網頁,使重載,這就是導航的servlet的內部名稱,不能refered通過內容servlet,getParameter在內容servlet中始終返回null。我只是不知道如何設計我的web應用程序才能使其工作。任何想法?

回答

1

當一個HTML元素提交有一些應用某些規則。首先,表單將被提交到表單的action屬性定義的頁面。其次,對服務器的請求將包含任何<input>元素的值。

在你的情況下,動作屬性丟失,所以你要的東西,如修復代碼:

<form action="/servlet1" .... > 

然後,你必須指定什麼將被提交。在你的情況下,你沒有使用表單提交的字段。因此,在您的servlet中,語句request.getParameter("anyAttribute")將始終返回null。所以,你必須在你的表格,包括提交某些值一樣

<form action="/servlet1" method="get"> 
    <input type="hidden" name="category" value="categoryname"/> 
    <button type="submit">submit</button> 
</form> 

此代碼將使提交form的在你的web.xml映射爲servlet1一個Servlet,你可以在獲得類別值使用request.getParameter("category")的Servlet的doGet()方法。

擴展您的功能,您也可以使用ajax提交,以免每次都重新加載頁面。我會建議ajax-jQuery實施來做that

+0

我遇到的問題是,我的另一個採用此導航參數的servlet是一個新頁面。我現在有結果,沒問題。但它不在內容空間內,它是一個完整的新頁面。 – Goldi

1

將用於「類別」的值到一個隱藏字段,而不是一個按鈕:

out.println("<li><a><form method='get'><button type='submit'>" + k2.getKName() + "</button><input type='hidden' name='category' value='"+ k2.getKategorieNr() + "'/></form></a></li>"); 
+0

你能解釋一下爲什麼嗎? – Goldi

+0

是的窗體不會發布按鈕的值屬性內的值。您可以通過運行您的代碼並查看URL並確認該類別不在查詢字符串中來確認。將其更改爲隱藏字段,您將看到它。 – garryp

+0

丹尼斯是否解決了您的問題? – garryp