问 - Restlet/Spring - 带有教程示例的 NotWritablePropertyException?
Q - Restlet/Spring - NotWritablePropertyException with tutorial sample?
我正在训练组合 Restlet/Spring 但有些事情我还是不明白...希望你能帮助我。
事实上,我正在尝试使用 Spring 的 Inject dependancies systeme 和 Restlet(就像在本教程中一样:http://restlet.com/technical-resources/restlet-framework/guide/2.3/introduction/getting-started/maven-spring)。所以我试着自己做,但没有用。我的代码 returns 这个异常:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'basecampComponent' defined in ServletContext resource [/WEB-INF/applicationContext.xml]:
Cannot resolve reference to bean 'basecampAppliction' while setting bean property 'defaultTarget'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'basecampAppliction' defined in ServletContext resource [/WEB-INF/applicationContext.xml]:
Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'root' of bean class[com.mycompany.restlet.basecamp.application.BaseCampApplication]:
Bean property 'root' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
所以我在寻找文件 "ApplicationContext.xml",这是他的内容:
<bean id="basecampComponent" class="org.restlet.ext.spring.SpringComponent">
<property name="defaultTarget" ref="basecampAppliction" />
</bean>
<bean id="basecampAppliction">class="com.mycompany.restlet.basecamp.application.BaseCampApplication">
<property name="root" ref="router" />
</bean>
<!-- Define the router -->
<bean name="router" class="org.restlet.ext.spring.SpringBeanRouter" />
有人知道我在哪里可以找到调试方法?
顺便说一下,我在 Java 1.8.0_60.
感谢您的所有帮助。
本杰明
我认为 Application
class 中没有 root
属性。您应该在 BaseCampApplication
class 中添加一个并使用它来配置您的应用程序(参见 createInboundRoot
方法),如下所述:
public class BaseCampApplication extends Application {
private Restlet root;
public Restlet createInboundRoot() {
return root;
}
public void setRoot(Restlet root) {
this.root = root;
}
}
希望对你有帮助,
蒂埃里
在网上查找了一些信息后,我假设我是如何解决这个问题的。
在这个link()上,他正在绑定路由器和属性 "inboundroot" Application。所以我认为变化很小(在教程中没有注意到)。事实上,我尝试了存档中提出的项目(不起作用)以及您自己编写教程的方式。这又是两个解决方案。
最终的解决方案是将 属性 的名称更改为 "inboundroot" 到 "root"。
"Never trusts the tuto"
感谢您花时间帮助我。
我正在训练组合 Restlet/Spring 但有些事情我还是不明白...希望你能帮助我。 事实上,我正在尝试使用 Spring 的 Inject dependancies systeme 和 Restlet(就像在本教程中一样:http://restlet.com/technical-resources/restlet-framework/guide/2.3/introduction/getting-started/maven-spring)。所以我试着自己做,但没有用。我的代码 returns 这个异常:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'basecampComponent' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Cannot resolve reference to bean 'basecampAppliction' while setting bean property 'defaultTarget'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'basecampAppliction' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'root' of bean class[com.mycompany.restlet.basecamp.application.BaseCampApplication]: Bean property 'root' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
所以我在寻找文件 "ApplicationContext.xml",这是他的内容:
<bean id="basecampComponent" class="org.restlet.ext.spring.SpringComponent">
<property name="defaultTarget" ref="basecampAppliction" />
</bean>
<bean id="basecampAppliction">class="com.mycompany.restlet.basecamp.application.BaseCampApplication">
<property name="root" ref="router" />
</bean>
<!-- Define the router -->
<bean name="router" class="org.restlet.ext.spring.SpringBeanRouter" />
有人知道我在哪里可以找到调试方法?
顺便说一下,我在 Java 1.8.0_60.
感谢您的所有帮助。 本杰明
我认为 Application
class 中没有 root
属性。您应该在 BaseCampApplication
class 中添加一个并使用它来配置您的应用程序(参见 createInboundRoot
方法),如下所述:
public class BaseCampApplication extends Application {
private Restlet root;
public Restlet createInboundRoot() {
return root;
}
public void setRoot(Restlet root) {
this.root = root;
}
}
希望对你有帮助, 蒂埃里
在网上查找了一些信息后,我假设我是如何解决这个问题的。
在这个link(
最终的解决方案是将 属性 的名称更改为 "inboundroot" 到 "root"。
"Never trusts the tuto"
感谢您花时间帮助我。