我有一个JSP页面,其中有一个如下所示的超链接:
<p class='posDash1'>
<input type="hidden" name="export" value="export_csv">
<a href="/admin/" name ="export"><img class="csvFile" src="/images/excel_logo.gif"/> Export.csv</a>
</p>
现在,如果我点击这个超链接,我需要在servlet中调用我的一个方法。所以在href中,我提供了我的servlet名称。这里的一切都运行正常,这意味着无论何时我点击这个href,我都可以调用我的servlet现在我不知道如何在servlet中识别这个调用来自href链接点击。
所以我添加了一个输入隐藏值,我从中想到,我将能够识别出此调用是来自href点击链接,但不知何故它不起作用:
public void handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception {
Response rr = null;
// but this always come as null
String export = req.getParameter(export);
if(export.equals("export_csv)) {
// do something here
}
// some code
}
每次导出变量值都为null时,我无法识别此调用是否来自href链接点击。有没有办法克服这个问题?
答案 0 :(得分:5)
<input>
元素仅在与<form>
一起使用时才会被序列化并发送。您可以将查询字符串添加到href
值。
<a href="/admin?export=export_csv" name ="export">
答案 1 :(得分:2)
隐藏值仅适用于表单提交:
<form action='/admin/' method='post'>
<input type="hidden" name="export" value="export_csv" />
<input type='submit' value='Export' />
</form>
如果你想要一个链接:
<a href="/admin/?export=export_csv">Export</a>
两者都将在servlet中以相同的方式读取。
request.getParameter("export");
答案 2 :(得分:0)
这让我的工作
writer.printf(" <p class=history>%n");
writer.printf("<input type=\"hidden\" name=\"history\" value=\"showHistory\">%n");
writer.printf("<a href=\"http://localhost:8080/\"> %n");
writer.printf("\t<a href=\"http://localhost:8080/?history=\"> <h5>Search History</h5>%n");
writer.printf("</p>%n");
然后我用它来查看它是否被点击,它会让我知道。
if(req.getParameter("history") != null)
{
System.out.println("you clicked history! = "+ req.getParameter("history").toString());
}