Java JSF中的循环managebean检测错误
我必须浏览A和B页,我想在JSF中从A导航到B,从B返回到A。我在A的托管bean中设置了托管属性B,反之亦然,但问题是我得到了如下错误 托管BEAN循环检测Java JSF中的循环managebean检测错误,java,jsf,icefaces,Java,Jsf,Icefaces,我必须浏览A和B页,我想在JSF中从A导航到B,从B返回到A。我在A的托管bean中设置了托管属性B,反之亦然,但问题是我得到了如下错误 托管BEAN循环检测 <managed-bean> <managed-bean-name>viewBulkMetalIssueBean</managed-bean-name> <managed-bean-class>com.cc.jas.web.manufacturing.bulkme
<managed-bean>
<managed-bean-name>viewBulkMetalIssueBean</managed-bean-name>
<managed-bean-class>com.cc.jas.web.manufacturing.bulkmetalissue.ViewBulkMetalIssueBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>viewJobcardBean</property-name>
<property-class>com.cc.jas.web.manufacturing.jobcard.ViewJobcardBean</property-class>
<value>#{viewJobcardBean}</value>
</managed-property>
</managed-bean>
<managed-bean>
<managed-bean-name>viewJobcardBean</managed-bean-name>
<managed-bean-class>com.cc.jas.web.manufacturing.jobcard.ViewJobcardBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>viewBulkMetalIssueBean</property-name>
<property-class>com.cc.jas.web.manufacturing.bulkmetalissue.ViewBulkMetalIssueBean</property-class>
<value>#{viewBulkMetalIssueBean}</value>
</managed-property>
</managed-bean>
ViewBulkMetalisheBean
com.cc.jas.web.manufacturing.bulkmetalissue.ViewBulkMetalIssueBean
要求
viewJobcardBean
com.cc.jas.web.manufacturing.jobcard.ViewJobcardBean
#{viewJobcardBean}
viewJobcardBean
com.cc.jas.web.manufacturing.jobcard.ViewJobcardBean
要求
ViewBulkMetalisheBean
com.cc.jas.web.manufacturing.bulkmetalissue.ViewBulkMetalIssueBean
#{viewBulkMetalisseBean}
这个问题有什么解决方案或替代方案吗?在JSF管理的bean中不能有循环注入。这在本文中得到了很好的解释 另一种解决方案是使用EL解析器(对于JSF 1.2),从托管bean中的java代码中查找引用:
请参阅以获得进一步的解释,以及其他JSF版本的实现。这确实是不可能的。如果没有这种检测,它只会导致托管属性设置的无限循环 为了解决这个问题,只需在注入“父”bean时,让它自己在“子”bean中设置
public class Parent {
private Child child;
public void setChild(Child child) {
this.child = child;
this.child.setParent(this);
}
// ...
}
与
父母亲
com.example.Parent
要求
小孩
com.example.Child
#{child}
小孩
com.example.Child
要求
当我从子级导航到父级时,它将引发空指针异常。从父母到孩子都很好,显然你做得太早了。在@PostConstruct
或更高版本中执行,而不是在构造函数中执行,这仅仅是因为还没有调用setter。顺便说一下,当循环注入被允许时,您会遇到完全相同的问题:)我能知道getValue()方法的中间值是什么吗?
public class Parent {
private Child child;
public void setChild(Child child) {
this.child = child;
this.child.setParent(this);
}
// ...
}
<managed-bean>
<managed-bean-name>parent</managed-bean-name>
<managed-bean-class>com.example.Parent</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>child</property-name>
<property-class>com.example.Child</property-class>
<value>#{child}</value>
</managed-property>
</managed-bean>
<managed-bean>
<managed-bean-name>child</managed-bean-name>
<managed-bean-class>com.example.Child</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>