首先,我想说我是 JSF 的新手。
我想创建可用于编辑文章的简单复合组件。它应该以这种方式工作:
- 复合组件看起来像这样
<my:article article="#{interestedBean.article}" />
ArticleBean
负责处理复合组件的数据(这里是save
方法)- 每个要使用文章的页面都需要将复合组件添加到视图并将
Article
对象添加到支持 bean Article
对象将被传递给复合组件,其值将在ArticleBean
问题是我不知道如何通过视图将实体(Article
对象)从一个 bean(感兴趣的 bean)传递到另一个(ArticleBean
)。
示例(伪代码;假设 Article 实体是简单的 String 对象,因此我们不需要使用转换器):
// input bean
public class HomePageBean {
private Article article;
@PostConstruct
public void init() {
this.article = new Article();
this.article.setText("welcome on home page");
}
public void setArticle(Article article) {
this.article = article;
}
public Article article() {
return article; // on real page article will be taken from database
}
}
// view
<h:form>
<h:outputText value="#{articleBean.article.text}">
<f:attribute name="value" value="#{homePageBean.article.text}" />
</h:outputText>
</h:form>
// output bean
public class ArticleBean {
private Article article;
public void setArticle(Article article) {
this.article = article;
}
public Article getArticle() {
return article;
}
public void save() {
// save article data to database
}
}
// entity
public class Article {
private article text;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
问题是SecondBean.entity.text
没有设置值。如何从视图将参数传递给支持 bean?我试图设置Article
值使用@ManagedProperty(value="#{param.article}")
但<h:outputText>
形式,因此值作为randomformname:article
.
对不起我的英语不好