簡體   English   中英

將傳遞的參數從jsp隱藏到struts2動作類

[英]hide passed parameter from jsp to struts2 action class

<s:url action="someAction" var="act">
<s:param name="param1">value1</s:param>
</s:url>
<s:a href="%{act}">Go Action</s:a>

通過單擊Go Action鏈接,地址將是www.example.com/someAction?param1=value1我想在提交表單時隱藏傳遞的參數(param1 = value1),如method =“POST”。 無論如何我能做到嗎? 謝謝。

沒有URL是GET請求。 如果您想發布POST,可以使用表單發布帖子請求。 如果你想要一個按鈕或鏈接來做一個帖子請求,最好使用JS / jQuery隱藏表單並綁定按鈕/鏈接點擊事件來提交表單。

Struts2無法控制客戶端,只有HTML,CSS和JS。

正如JB Nizet所提到的,如果它是關於保護您的信息,請參閱此處的討論: 如何通過HTTP安全地發送密碼?

在get請求中發送大多數數據幾乎沒有問題(除了密碼!)因為如果它是一個表格,有人可以很容易地看到表單的內容,在那里看到url中的參數肯定更難。

從服務器安全角度來看,您應該始終認為客戶端可以並且將能夠發送最糟糕的數據。 這就是為什么struts2中的驗證框架如此易於使用,與原始Web編程系統不同,類型轉換是一個巨大的幫助。 如果你有一個int屬性並在查詢中使用它,你知道它將是一個int而不是一個String。 如果需要String,最好使用Enum來確保允許值。

要隱藏傳遞的參數,您需要提交表單。 您應該阻止click事件的默認行為並將其替換為form事件。 就像在這個例子中一樣

<s:form id="f1" action="someAction">
  <s:hidden name="param1" value="value1"/>
  <s:url action="someAction" var="act"/>
  <s:a id="a1" href="%{act}">Go Action</s:a>
  <script type="text/javascript">
    $(document).ready(function() {
      $("#a1").click(function(event) {
        event.preventDefault();
        $("#f1").submit();
      });
    });
  </script>
</s:form>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM