1

我在我的所有actionbeans 上使用URL 绑定,其中一些需要一个参数,例如/admin/users/123。

以这个 URL 为例,在我的 actionbean 中,我可以获取参数 123 并很好地显示用户信息。同一页面允许更改用户信息,这就是问题所在。

提交更新的用户信息后,URL 变为 /admin/users。

这是一个问题,因为调用 context.getRequest().getRequestURL() 会返回 /admin/users 而不是 /admin/users/123。

我认为这是由于标签在jsp中的写入方式:

<stripes:form beanclass="com.name.ui.web.stripes.action.admin.UserActionBean">...</stripes:form>

解决为

<form action="/admin/users" method="post">...</form>

相应的 actionbean 编码和注释如下:

@UrlBinding("/admin/users/{userId}")
public class UserActionBean{ 
  private long userId;
  public long getUserId(){return userId;}
  public void setUserId(long userId){this.userId=userId;}
}

有没有人遇到过同样的问题并设法解决?

4

2 回答 2

3

正如Martin Walsh 在 Stripes 邮件列表中所回答<stripes:param>的那样,您可以使用内部的标签<stripes:form>。我要补充一点,做一个 redirect-after-post (或Post/Redirect/Get)也可以让你返回到你的 /admin/users/123 URL。

于 2012-09-11T12:20:48.940 回答
0

即使您没有使用 JSP(在我的情况下,我使用的是 Velocity),您仍然可以明确地将 id (123) 放入请求中并转发,或者您可以按照 Frank 的指示在发布后重定向。

于 2013-01-15T21:54:58.567 回答