stripe不会调用所需的事件处理程序

时间:2012-03-07 03:27:43

标签: stripes

我正在使用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}”使条纹无法找到删除方法。

1 个答案:

答案 0 :(得分:4)

尝试将@UrlBinding更改为以下内容:

@UrlBinding("/subject/{subject_type}/{subject_name}/{$event}")

没有{$event} Stripes无法分辨URL参数的哪一部分应该是事件。

此外,要测试您可以尝试(使用当前@UrlBinding)访问localhost/subject/applied/math?remove=

希望有所帮助。