Dorado 7 : 15. 使用中常见错误

com.bstek.dorado.data.type.DefaultEntityDataType cannot be cast to com.bstek.dorado.data.type.AggregationDataType

这个错误为DataSet或Reference的DataType属性含中括号"【xxx】"是集合类型,而DataProvider提供的返回数据是单个JavaBean所致。

调整办法:将dataType属性设置调整为单实体对象,也就是去掉中括号。

com.bstek.dorado.data.type.AggregationDataType cannot be cast to com.bstek.dorado.data.type.DefaultEntityDataType

这个就是上面那个错误的相反的形式。

这个错误为DataSet或Reference的DataType属性含中括号"【xxx】"是单个的实体对象,而DataProvider提供的返回数据是集合类的JavaBean所致。

调整办法:将dataType属性设置调整为对象集合,也就是添加上中括号。

找不到DataProvider,DataResolver或Expose方法

Unknown ExposedService [xxxxxx#xxxx]

Unknown DataProvider [xxxxxx#xxxx]

发生该错误一般检查三个地方:

  • Ajax对应的Java方法是否声明了@Expose标记,DataProvider对应的Java方法是否声明了@DataProvider标记
  • 对应的server或dataProvider属性配置的首字母未改写为小写,如:"SimpleAjax#toUpperCase"要改写为"simpleAjax#toUpperCase"(如果Java类前两个字母都大写则要用"SImpleAjax#toUpperCase")
  • 方法对应的Java类是否已经使用@Component标记
  • app-context.xml中是否配置了扫描目录<context:component-scan base-package="com.demo.sample"/>(注意base-package要配置为对应的Java类的相关路径上,要包含所有相关的服务类,如果一个base-package无法定义,则可以定义多个<context:component-scan>节点)

都配置好之后重新启动服务,因该就可以了。

No bean named 'dorado.viewServiceInterceptorRegister' is defined

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'dorado.viewServiceInterceptorRegister' is defined

 at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:570)

 at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1114)

 at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedBeanDefinition(AbstractBeanFactory.java:895)

 at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedBeanDefinition(AbstractBeanFactory.java:1169)

 at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedBeanDefinition(AbstractBeanFactory.java:1128)

 

一般常见的是从7.4版本以下的dorado-core升级到7.4.x版本后出现的错误,出现这种错误是项目中定义了dorado的一个服务类,如:

<bean parent="dorado.viewServiceInterceptorRegister">
    <property name="methodInterceptor">
        <bean class="xxx.xxx.xxx.xxx" />
    </property>
</bean>

如果你没有将这个类定义在servlet-context.xml中就会出现这种错误。

当然还存在一种情况,就是你的项目中并未定义,这种情况下就应该是项目中的某一个dorado-addon的版本较老,从而导致这个问题的,请尽可能的将所有的dorado-addon升级到2014年6月1日以后的版本,包括BDF也是这样。