【问题标题】:Hide parameter passed by URL Tag in Struts 2 [duplicate]在Struts 2中隐藏URL标签传递的参数[重复]
【发布时间】:2014-10-24 21:47:45
【问题描述】:

在我的 Struts 2 应用程序中,我使用迭代器标记从数据库中获取值表,并使用相应的 getter 和 setter。例如,我正在获取帐号、姓名和账户余额列表。

现在,我没有做的是,如果有人单击帐号,那么请求将被发送到另一个需要 getter 和 setter 的操作类,并将他重定向到帐户详细信息所在的页面根据该帐号显示。

问题是,当用户点击 URL 时,像 get 参数一样传递值,因此非常不安全。 我想隐藏这些值。

目前我正在使用以下内容:

<s:url action="custACDetails" var="urlTag" >
    <s:param name="yourAc"><s:property value="acno"/></s:param>
</s:url>
<a href="<s:property value="#urlTag" />" ><s:property value="acno"/></a>

【问题讨论】:

  • 您是否尝试在 url 标签中添加 method 属性。文档说它有方法属性
  • 是的。其中method表示action类中方法的名称,不是GET或POST。试过了。

标签: java url parameters struts2


【解决方案1】:

您可以添加表单来触发表单提交事件,而不是默认链接的click 事件。表单应该包含一个隐藏字段来保存参数值。然后添加javascript代码来处理click事件。

<s:url action="custACDetails" includeContext="false" var="urlTag"/>
<s:set var="contextPath">${pageContext.request.contextPath}</s:set>
<s:a id="acno" href="%{#contextPath+#urlTag}"><s:property value="acno"/></s:a>
<s:form id="form" action="%{#urlTag}" method="POST">
  <s:hidden name="yourAc" value="%{acno}"/>
</s:form>
<script type="text/javascript">
  $(document).ready(function() {
    $("#acno").click(function(e) {
      e.preventDefault();
      $("#form").submit();
    });
  });
</script>

【讨论】:

  • 谢谢。但这里的问题在于路径。根据代码块,URL 是localhost:8000/FinaSoft/account//account/custACDetails.action。但实际上应该是:localhost:8000/FinaSoft/account/custACDetails.action
  • 我也加了jquery,但是action页面上acno是0。
  • s:a 标签需要调整。
  • 我试过你的最后一次更新。在下一页我仍然得到 0。在 apache 日志中还收到以下警告,警告:找不到指定操作的配置:命名空间中的“/account/custACDetails.action”:“/account”。表单动作默认为“动作”属性的文字值。 2014 年 9 月 1 日晚上 9:29:06 com.opensymphony.xwork2.util.logging.commons.CommonsLogger 警告警告:找不到指定操作的配置:命名空间中的“/account/custACDetails.action”:“/account”。表单动作默认为“动作”属性的文字值。
  • @SrijitB 这些其他问题不在此处讨论。您可以在另一篇文章中发布详细信息。请记住,不完整的问题与 SO 无关。您应该只发布SSCCE。也不要再次使用这些代码发布相同的问题,因为它会重复。
猜你喜欢
  • 2015-08-24
  • 1970-01-01
  • 1970-01-01
  • 2013-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多