我在所有的actionbean上都使用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;}
}有没有人遇到过同样的问题并设法解决了?
发布于 2012-09-11 20:20:49
作为Martin Walsh编写的Stripes邮件列表中的answered,您可以在<stripes:form>中使用<stripes:param>标记。我要补充的是,在post后执行重定向(或Post/Redirect/Get)也允许您返回到/admin/users/123URL。
发布于 2013-01-16 05:54:59
即使您没有使用JSP (在我的例子中我使用的是Velocity),您仍然可以显式地将id (123)放在请求中并转发,或者您可以像Frank指出的那样在post之后重定向。
https://stackoverflow.com/questions/12173702
复制相似问题