将传递的参数从jsp隐藏到struts2动作类

时间:2013-05-04 15:59:46

标签: java jquery jsp struts2 parameter-passing

<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”。无论如何我能做到吗?感谢。

2 个答案:

答案 0 :(得分:2)

没有网址是GET请求。如果您想发布POST,可以使用表单发布帖子请求。如果你想要一个按钮或链接来做一个帖子请求,最好使用JS / jQuery隐藏表单并绑定按钮/链接点击事件来提交表单。

Struts2无法控制客户端,只有HTML,CSS和JS。

如JB Nizet所述,如果要保护您的信息,请参阅此处的讨论:How to send password securely over HTTP?

在get请求中发送大多数数据几乎没有问题(除了密码!)因为如果它是一个表格,有人可以很容易地看到表单的内容,在那里看到url中的参数肯定更难。

从服务器安全角度来看,您应该始终认为客户端能够并且能够发送最糟糕的数据。这就是为什么struts2中的验证框架如此易于使用,与原始Web编程系统不同,类型转换是一个巨大的帮助。如果你有一个int属性并在查询中使用它,你知道它将是一个int而不是一个String。如果你需要一个字符串,最好使用Enum来确保允许该值。

答案 1 :(得分:1)

要隐藏传递的参数,您需要提交表单。您应该阻止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>