2013-05-04 90 views
1
<s:url action="someAction" var="act"> 
<s:param name="param1">value1</s:param> 
</s:url> 
<s:a href="%{act}">Go Action</s:a> 

點擊進入動作鏈接,地址將www.example.com/someAction?param1=value1 我想隱藏傳遞的參數(參數1 =值),如方法=「POST」的形式提交的。無論如何,我可以做到嗎?謝謝。隱藏傳遞的參數從JSP Struts2的action類

+3

如果您想獲得GET,則不需要。但爲什麼要隱藏參數值?如果出於安全原因,那麼這不是一個有效的理由。任何能夠在瀏覽器中按F12的人都可以找到哪些參數通過,即使是POST也是如此。 – 2013-05-04 21:15:15

回答

1

要隱藏傳遞的參數,實際上您需要提交表單。您應該防止單擊事件的默認行爲並將其替換爲表單事件。像這個例子那樣做

<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> 
2

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

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

正如JB Nizet提到的,如果它是如何保護您的信息,請參閱這裏的討論:How to send password securely over HTTP?

有一點問題GET請求發送大部分數據(!不是密碼等),因爲如果它是一個形成一個人可以隨時看到表單的內容,在url中查看參數肯定更難。

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