您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Seam / Spring WebFlow应用程序中的codingdicError

Seam / Spring WebFlow应用程序中的codingdicError

无论是SeamApplicationFlowApplication有缺陷的正确委派到包装中的应用。解决它的一种方法是通过FlowApplicationFactory

首先,获取原始源代码并将其放入webapp项目的Java源文件夹中,并保持其原始包。您不一定需要操纵JAR。中的类的/WEB- INF/classes加载优先级高于JAR中的类。

然后按如下方式操作该类(基于OmniFacesOmniApplicationFactory):

public class FlowApplicationFactory extends ApplicationFactory {

    private final ApplicationFactory wrapped;
    private volatile Application application;

    public FlowApplicationFactory(ApplicationFactory wrapped) {
        this.wrapped = wrapped;
    }

    @Override
    public Application getApplication() {
        return (application == null) ? createFlowApplication(wrapped.getApplication()) : application;
    }

    @Override
    public synchronized void setApplication(Application application) {
        wrapped.setApplication(createFlowApplication(application));
    }

    private Application createFlowApplication(final Application application) {
        Application newApplication = application;

        while (!(newApplication instanceof FlowApplication) && newApplication instanceof SeamApplication) {
            newApplication = ((SeamApplication) application).getDelegate();
        }

        if (!(newApplication instanceof FlowApplication)) {
            newApplication =  new FlowApplication(application);
        }

        return (this.application = newApplication);
    }

}

因此,在创建时FlowApplication,它将首先检查已包装的应用程序,如果之前尚未创建,则将其重新使用。

请注意,该SeamApplication依赖项很尴尬,但这只是为了修正它。JSF2通过新ApplicationWrapper类使您变得更轻松,您可以使用它而不是SeamApplicationcreateFlowApplication()块中使用。

如果这一切仍然无法正常工作,那么也许SeamApplicationFactory初始化 的FlowApplicationFactory。您可以通过按期望的顺序显式地重新声明<application- factory>webapp自身faces-config.xml中的条目来强制排序(错误修正为最后一个):

<factory>
    <application-factory>org.jboss.seam.jsf.SeamApplicationFactory</application-factory>
    <application-factory>org.springframework.faces.webflow.FlowApplicationFactory</application-factory>
</factory>

否则,您可能想要执行与上述相同的操作SeamApplicationFactory(显然是在代码FlowApplicationSeamApplication交换)。

Java 2022/1/1 18:15:22 有667人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶