我正在使用stripesframework开发一个Web应用程序并遇到了问题。我找到了一个解决方法,但我想知道它为什么会发生。
我写了一个像
这样的课程@UrlBinding("/subject/{subject_type}/{subject_name}")
public class SubjectActionBean extends ActionBean {
private String subjectType;
private String subjectName;
@Validate(required = true)
public void setSubjectName(String subjectName) {
this.subjectName = subjectName;
}
@Validate(required = true)
public void setSubjectType(String subjectType) {
this.subjectType = subjectType;
}
@DefaultHandler
public Resolution view() {
return new Resolution();
}
}
其中subject_type和subject_name根据调用操作的主题页面而更改。所以调用将是localhost / subject / applied / math。
直到这里工作正常。当我尝试创建一个删除方法
时,问题就出现了@HandlesEvent("remove")
public void removeSubject() {
}
并使用localhost / subject / applied / math / remove调用它 此时,stripe开始抱怨调用没有处理程序,也没有默认处理程序。
所以,我在路径中删除了“{subject_type} / {subject_name}”并将它们作为参数传递,并在方法内部使用以下方法解压缩它们:
getContext().getRequest().getParameter();
这使得remove方法被调用。
我现在的问题为什么“{subject_type} / {subject_name}”使条纹无法找到删除方法。
答案 0 :(得分:4)
尝试将@UrlBinding
更改为以下内容:
@UrlBinding("/subject/{subject_type}/{subject_name}/{$event}")
没有{$event}
Stripes无法分辨URL参数的哪一部分应该是事件。
此外,要测试您可以尝试(使用当前@UrlBinding
)访问localhost/subject/applied/math?remove=
希望有所帮助。