[英]servlet Query String
我正在使用查詢字符串將參數發送到表單操作標簽中的其他頁面,但是當我在下一頁獲取值時,它顯示null
並且null
存儲在數據庫中。
我的代碼如下:
out.println("<html>");
out.println("<form action=SubmitTimesheet?manager="+manager+">");
在另一頁上,我嘗試以以下方式獲取parameter的值:
String manager=request.getParameter("manager");
out.println(manager);
但是它正在打印null
並且如果我嘗試將獲取的值存儲在數據庫中,它將存儲null。
請幫忙。
如果manager
值為null,則不要添加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
。
更新
實際上,您不應將查詢參數添加到<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) + "\">");
上面使用了由問題答案推薦的庫推薦的Java轉義HTML方法 。
我已經使用了會話對象,並在會話變量而不是查詢字符串中傳遞了manager的值。 我使用了以下代碼:
ses.putValue(“ manager”,manager);
在第一個servlet頁面上,然后在第二個servlet頁面上,我這樣獲取值:
String manager=ses.getValue("manager").toString();
out.println(manager);
現在它正在打印正確的值,而不是null
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.