struts2 Invalid action class configuration的处理

    xiaoxiao2021-03-25  65

    不知道是否有人和我一样使用struts2+spring+convention plugin+rest plugin。Invalid action class configuration的原因很多,而我这边的原因是由于合用了这四种组件。

    其实一般情况下也未必会发现这个问题。出错信息如下

    Exception processing the result. java.lang.RuntimeException: Invalid action class configuration that references an unknown class named <类名>

    因为我要用Spring作为struts的ObjectFactory,所以这个类名也就是Spring bean的ID。 这样问题出现了,下面是一个用rest plugin写的controller。

    public class MyController implements ModelDriven<Object> { @Action(className="myController") public String show() { return "show"; } ... }

    利用Convention plugin的Action标注,表明用”myController”作为class name。而这个名字来自Spring bean。 一般用rest plugin, 我们关心.json的链接是否能返回JSON数据,而这个Java Object到JSON的转换是由Rest plugin完成的,也就是说我们并不需要指定一个Result的jsp文件就应该可以。然后就出现了刚才的错误信息。

    原因就在于对于Rest plugin需要创建一个result对象,而Convention plugin则回去找对应的jsp文件,如果找不到,则会根据class name实例化一个Action,然后推算一个路径。 这个时候实例化class,用的并不是Spring容器,所以就会出现上面的出错信息。 中间具体原因,没有深入看代码,但应该就是这个原因。

    这个可能也算是插件之间的兼容性问题吧。 如何绕过这个问题,其实很简单,提供一个my-show.jsp文件就可以了。内容可以是空的,只要按照convention plugin的要求存在这个文件就可以了。

    转载请注明原文地址: https://ju.6miu.com/read-36080.html

    最新回复(0)