【问题标题】:s:form tag action parameters being removeds:form 标签动作参数被移除
【发布时间】:2014-02-24 01:44:02
【问题描述】:

我一直在寻找和寻找,这正在摧毁我。我有这个:

<s:form method="post" action="%{methodOne}" cssClass="buttons">

emailFormUrl 正确返回 URL,但参数已被剥离。

  public String methodOne() {
    return anotherClass.methodTwo(id);
  }

说到:

  public static String methodTwo(
      String id) {
    return fastEncode("", "longurl/view.jsp",
        new ParameterPairing("id", id));
  }

由于某种原因,id 被剥离,这给我留下了一个验证错误,并且没有完成我需要的操作。据我所知,在 7 月的紧急安全更新之前我们没有遇到问题,但它是很少使用的小功能(我猜是删除它的一个论据)。

我不想添加隐藏参数,因为我想了解这不起作用的原因,而不是解决方法(我仍处于职业生涯的繁重学习部分)。

【问题讨论】:

  • 如果您正在发出一个帖子请求,为什么您需要在 url 中使用该参数?
  • 简而言之,我不知道,这是我大学毕业后使用 struts 的头几个月(大学:一个让你以为你什么都知道的地方,直到你在工作中学习你有类似数量的知识如孔雀)。本质上,我正在设置附加了实例 id 参数的 url。该表单发送信息并指示发送一封电子邮件,其中包含基于此实例 ID 计算的信息。我已经测试了这个 action="%{method" 的所有其他用途,它们似乎反应良好。我想添加 其中
  • 当然可以修复它,但是因为它曾经可以工作,所以我需要找出问题所在以及发生了什么变化。我的理解并没有涵盖足够的广度,无法知道我们为什么要尝试使用这种方法来完成操作。很抱歉我不能提供更多信息 - 我们都学过一次,嘿?
  • 1) 启用devMode并在调用过程中仔细检查所有输出; 2)将log.debug(id)作为methodOne和methodTwo的第一行,以确保它被剥离; 3) id 来自哪里?它在哪里初始化?如果可能,发布更多代码。
  • 很抱歉我消失了 - 认为折断肢体会很有趣,所以请了几天厚颜无耻的假期,感谢您的回复和反馈。今天下午我会好好阅读。

标签: java forms jsp parameters struts2


【解决方案1】:

在 servlet 环境中,&lt;s:form&gt; 标签使用ServletUrlRenderer 类来呈现表单 url。 如果找不到action 属性中指定的操作的配置,则将使用action 属性的文字值(无参数)。

注意:您需要使用不带扩展名的操作名称才能在配置中找到它。所以some_action?foo=bar如果你配置了some_action,会在form中设置参数,但是some_action.action?foo=bar因为.action扩展而找不到,参数会被剥离。

【讨论】:

  • 根据上面的评论,很抱歉我消失了,有一些骨骼问题,原来楼梯不是我的朋友。今天下午我会通读一遍再玩。不过我不明白罗马人的评论。
猜你喜欢
  • 1970-01-01
  • 2018-02-02
  • 1970-01-01
  • 2016-07-07
  • 1970-01-01
  • 2013-03-30
  • 1970-01-01
  • 2017-03-04
  • 2011-06-15
相关资源
最近更新 更多