1

我在 JSP 文件中使用以下代码,但我看到隐藏字段的值没有被提交

<form action="/processor/RequestActivityByCsv" method="post" enctype="multipart/form-data">
<div class="inputDiv">
   <h5>comma delimited file: <input type="file" name="file"/></h5>
   <input name="csrfToken" type="hidden" value="<%=CryptoUtils.generateCsrfToken()%>" />
   <input type="submit" value="upload" class="btn btn-primary"/>
</div>
</form>

在页面源中,这是:

<form action="/processor/RequestActivityByCsv" method="post" enctype="multipart/form-data">
      <div class="inputDiv">
         <h5>comma delimited file: <input type="file" name="file"/></h5>
         <input name="csrfToken" type="hidden" value="t5ipRVFNIP83IUh5NCf7PiTp4mM2kBFVdHjqwlGx7PI=" />
         <input type="submit" value="upload" class="btn btn-primary"/>
      </div>
 </form>

有什么明显的我可能会在这里遗漏吗?

4

2 回答 2

2

您可以使用获取隐藏字段以及所有其他字段值

String value = request.getParameter("fieldname").toString();

在您获取字段 na 的隐藏值的情况下

String csrfToken= request.getParameter("csrfToken").toString();

更新 2

索引.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <form action="test.jsp" method="get">
        <input type="hidden" name="csrfToken" id="csrfToken"  value="t5ipRVFNIP83IUh5NCf7PiTp4mM2kBFVdHjqwlGx7PI=" />
        <input type="submit" value="sumbit"/>
        </form>
    </body>
</html>

测试.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <%
        String csrfToken= (String)request.getParameter("csrfToken");
        out.print(csrfToken);
        %>
    </body>
</html>

输出

t5ipRVFNIP83IUh5NCf7PiTp4mM2kBFVdHjqwlGx7PI=

于 2013-05-17T04:09:12.847 回答
0

是的,我以前遇到过这个问题。

尝试这个 :-

<form name="frmfileupload" action="/processor/RequestActivityByCsv" method="post" enctype="multipart/form-data">
<div class="inputDiv">
   <h5>comma delimited file: <input type="file" name="file"/></h5>
   <input name="csrfToken" type="hidden" value="<%=CryptoUtils.generateCsrfToken()%>" />
   <input type="button" value="upload" onclick="funSubmit()" class="btn btn-primary"/>
</div>
</form>

使用 Java 脚本提交表单:-

<script >
 function funSubmit(){

    //You can do javascript validation here 
    var val=document.frmfileupload.csrToken.value;
    document.frmfileupload.action="<%=request.getContextPath()%>/processor/RequestActivityByCsv?csrToken="+val;
    document.frmfileupload.submit();

}

</script>

在上面的 java 脚本中,我使用 URL 发送令牌值。

希望它会帮助你。

于 2013-05-17T04:28:23.003 回答