@ManagedProperty-将一个请求范围内的bean注入另一个请求范围内的bean
||
我有这个SearchBean:
@ManagedBean(name = \"searchBean\")
@RequestScoped
public class SearchBean implements Serializable
{
private String input = null;
// getter methods
public String getInput() {
return input;
}
// setter method
public void setInput(String input) {
this.input = input;
}
public String Submit() {
return null;
}
}
我可以使用@ManagedProperty将其注入另一个bean中。例如:
@ManagedBean(name = \"bookBean\")
@RequestScoped
public class BookBean implements Serializable
{
@ManagedProperty(value = \"#{searchBean}\")
private SearchBean searchBean;
@PostConstruct
public void init()
{
System.out.println(\"Value: \" + searchBean.getInput());
}
public SearchBean getSearchBean() {
return searchBean;
}
public void setSearchBean(SearchBean searchBean) {
this.searchBean = searchBean;
}
}
和Facelet(search.xhtml):
<h:form id=\"formSearch\">
<h:commandButton value=\"Search\" action=\"#{searchBean.Submit}\" />
</h:form>
更新:我通过ui:insert
组件将search.xhtml
插入book.xhtml
中,如下所示:
<h:form id=\"formBooks\">
<ui:insert name=\"search\">
<ui:include src=\"/templates/common/search.xhtml\"/>
</ui:insert>
</h:form>
上面的“ 7”方法应返回一个值,该值是表单提交的结果。以上注射方法可以吗?
没有找到相关结果
已邀请:
1 个回复
盛虱
像这样:
如果是这样,那么它将为空:
但是,假设已设置一个值,则在调用此方法时该值不会为null:
理查德·高塔(Richard Hightower)针对非信徒的JSF的图像:JSF应用程序生命周期。 原因是由于JSF生命周期如何工作: 第一次解析
时,发现不存在: 实例化bean 执行任何依赖项注入(在这种情况下没有任何依赖项注入) @PostConstruct方法被调用 Bean放入范围 假设“申请请求值”和“验证”阶段成功完成,则在“更新模型值”阶段中调用“ 14”。 在调用应用程序阶段调用“ 15” 此过程在JSF规范中定义。 现在,如果直接从参数图中注入
,则在
期间它不会为空:
但是,这没有任何真正的优势-您正在跳过任何输入验证,并且不能将ѭ8用作字段绑定,因为它将在“更新模型值”阶段中被覆盖。
方法是执行搜索的应用程序逻辑所在的位置。