2016-02-12 81 views
0

我使用的查詢字符串形式的行動標籤 發送參數其他網頁,但是當我的下一個頁面上獲取的價值,它顯示nullnull被存儲在數據庫中。servlet的查詢字符串

我的代碼如下:

out.println("<html>"); 
out.println("<form action=SubmitTimesheet?manager="+manager+">"); 

和其他頁面上,我想在下面的方式來獲取參數的值:

String manager=request.getParameter("manager"); 
out.println(manager); 

但它打印null如果還我試圖將存儲的值存儲在它存儲爲null的數據庫中。

請幫忙。

+1

首先你需要檢查'出.println(「

」);'。在發送給servlet之前,您是否檢查過經理是否有價值? – androidGenX

+0

您能否請您在第一頁檢查管理員是否爲空? – prasad

+0

是的,我已經檢查過,在第一頁顯示管理器的正確值,但在第二頁顯示爲空。 –

回答

0

如果manager值爲空,則不要添加manager查詢參數。

還記得要編碼查詢參數。

最後,應該引用action屬性的值。

out.print("<form action=\"SubmitTimesheet"); 
if (manager != null) 
    out.print("?manager=" + URLEncoder.encode(manager, "UTF-8")); 
out.println("\">"); 

取而代之的是"UTF-8"字符串文字的,你也可以使用StandardCharsets.UTF_8


UPDATE

在現實中,你不應該查詢參數添加到<form>的作用。該形式將發佈的<input>所有值和其他形式相關的元素,所以你應該做的,是添加manager值作爲隱藏的輸入字段:

out.println("<html>"); 
out.println("<form action=\"SubmitTimesheet\">"); 
if (manager != null) 
    out.print("<input name=\"manager\" type=\"hidden\" value=\"" + 
       StringEscapeUtils.escapeHtml4(manager) + "\">"); 

上述用途的回答表明圖書館質疑Recommended method for escaping HTML in Java

+0

感謝您的建議。我將你的代碼應用到了我的頁面中。但它仍然在數據庫中存儲空值,這意味着第二頁上的管理器值仍然爲空。 –

+0

@ cr.7我從來沒有嘗試過表單操作的查詢參數,所以這可能甚至不起作用。請參閱更新以獲取正確的方法。 – Andreas

0

我有使用會話對象,並在會話變量而不是查詢字符串中傳遞管理器的值。 我已經使用以下代碼:

ses.putValue(「manager」,manager);

的第一個servlet頁面上,然後將第二個servlet頁面上我取這樣的值:

String manager=ses.getValue("manager").toString(); 

out.println(manager); 

現在正在打印正確的值,而不是空